簡體   English   中英

打字錯誤條件IP / if-if-else

[英]typoscript negate conditions IP / if - if - else

是否可以用打字稿否定病情?

如果您的ip地址在10.*.*.*范圍內,則我們只有一個頁面,僅顯示部分內容:

[IP=10.*.*.*]
  # show internal content
[global]

這可行。 但是現在我們有以下問題。 新的負載均衡器(waf)也具有一個內部地址(即10.1.2.3 ),因此內部內容在上述條件下顯示! 不幸的是,否定IP條件是行不通的。 我試過了:

[IP=10.*.*.*] && [IP!=10.1.2.3]

否定條件的有效解決方案是:

[IP=10.1.2.3]
  # do nothing
[ELSE]
  # show internal content
[global] 

但我也需要條件[IP=10.*.*.*] 我也試過

[IP=10.1.2.3]
  # do nothing
[IP=10.*.*.*]
  # show internal content
[global] 

但它也不起作用。

也許有人有解決的辦法! 更改loadbalancer-ip是沒有選擇的!

謝謝,每小時

您要做的不是更改條件,而是將該IP標記為反向代理,例如:

$ GLOBALS ['TYPO3_CONF_VARS'] ['SYS'] ['reverseProxyIP'] = '10 .1.2.3'; $ GLOBALS ['TYPO3_CONF_VARS'] ['SYS'] ['reverseProxyHeaderMultiValue'] ='last';

這不會使用您的負載均衡器的IP,而是用於連接到它的原始IP。 因此,您的條件將像往常一樣工作(前提是您的負載均衡器設置了正確的X-Forwarded-For標頭)。

您要這樣做,是因為這不僅可以解決這些問題,還可以解決日志記錄(用於登錄嘗試的TYPO3 sys_log),用於IP-Auth等問題,因此這是解決問題的正確方法。

純TypoScript有一種方法:

TS常數:

[IP=10.1.2.3]
[else]
  temp.noWaf = 1
[end]

TS設定:

[IP = 10.*.*.*] && [globalVar = LIT:1 = {$temp.noWaf}]
  # show internal content
[end]

但是,將邏輯拆分為TS常數和設置是恕我直言的。 使用globalVar = LIT很難閱讀。

最后,我進行清理工作的某些嘗試失敗,例如使用LIT:0!= LIT:1

我會使用userFunc 要檢索IP地址,可以使用GeneralUtility::getIndpEnv('REMOTE_ADDR')並比較IP地址,其中有GeneralUtility::cmpIP()

對該主題中您問題的基本答案:是的,這是可能的,而我已經做到了,這里舉一個例子:

[browser = msie] && [version =  <7] && [globalVar = TSFE:id != 100]

(答案友好,摘自pi-phi Spicker, http: //www.pi-phi.de/19.html)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM