[英]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.