我已经看过了问题,但我找不到我真正想要的东西。
从逻辑上讲,请求是只允许特定is访问特定页面。所有其他in都应该转发到通用的404规则(而不是得到一个安全错误,这只是让一些人想要进入)
规则看起来像这样:
RewriteCond %{REQUEST_URI} ^/Folder/Site/index.hml
RewriteCond %{REMOTE_HOST} !^IP1
RewriteCond %{REMOTE_HOST} !^IP2
RewriteCond %{REMOTE_HOST} !^IP3
RewriteRule $ /Generic404.html [PT,L]所以之前的技术使用了上面的内容,而我是一个来自IIS世界的apache新手,它实际上是非常可定制的,我正在慢慢地学习并充分发挥我的初级角色。(根据我有限的理解,上面除了IP1,IP2,IP3之外的每个IP都会传递到Generic404.hml页面,而IP1,IP2,IP3将不会收到重写,所以他们将能够访问该页面)
但是我想知道OR可以在上面使用吗?类似于:
RewriteCond %{REQUEST_URI} ^/URL
RewriteCond %{REMOTE_HOST} !^IP-1 [OR]
RewriteCond %{REMOTE_HOST} !^IP-2 [OR]
RewriteCond %{REMOTE_HOST} !^IP-3
RewriteRule $ /Generic404.html [PT,L]我之所以好奇,只是因为他对我为什么不能使用或根本没有任何意义的解释…我希望有人能以一种对我有意义的方式解释它。
发布于 2014-06-18 00:59:56
重写条件的默认运算符是逻辑AND。如果你用逻辑或替换它,你会得到不同的结果。
当你不是来自IP1-IP3时,第一条规则将显示404,因为在显示404之前,所有重写条件都必须填满。
如果IP1与IP2和IP3的值不同,第二个规则将始终显示404。因为返回true的单个条件就足以应用整个规则。如果IP1到IP3具有不同的值,则至少有两个条件检查将返回true。
https://stackoverflow.com/questions/24268564
复制相似问题