首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿帕奇RewriteCond规则...试着理解前一个人

阿帕奇RewriteCond规则...试着理解前一个人
EN

Stack Overflow用户
提问于 2014-06-18 00:07:32
回答 1查看 35关注 0票数 0

我已经看过了问题,但我找不到我真正想要的东西。

从逻辑上讲,请求是只允许特定is访问特定页面。所有其他in都应该转发到通用的404规则(而不是得到一个安全错误,这只是让一些人想要进入)

规则看起来像这样:

代码语言:javascript
复制
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可以在上面使用吗?类似于:

代码语言:javascript
复制
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]

我之所以好奇,只是因为他对我为什么不能使用或根本没有任何意义的解释…我希望有人能以一种对我有意义的方式解释它。

EN

回答 1

Stack Overflow用户

发布于 2014-06-18 00:59:56

重写条件的默认运算符是逻辑AND。如果你用逻辑或替换它,你会得到不同的结果。

当你不是来自IP1-IP3时,第一条规则将显示404,因为在显示404之前,所有重写条件都必须填满。

如果IP1与IP2和IP3的值不同,第二个规则将始终显示404。因为返回true的单个条件就足以应用整个规则。如果IP1到IP3具有不同的值,则至少有两个条件检查将返回true。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24268564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档