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