繁体   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