.htaccess mod_rewrite 中的“或”标志
Posted
技术标签:
【中文标题】.htaccess mod_rewrite 中的“或”标志【英文标题】:"OR" Flag in .htaccess mod_rewrite 【发布时间】:2012-09-11 04:15:59 【问题描述】:刚找到这个.htaccess重写代码
RewriteEngine on
RewriteCond %HTTP_HOST ^my.domain.com$ [NC,OR]
RewriteCond %REQUEST_URI !public/
RewriteRule (.*) /public/$1 [L]
我想知道“OR”标志的目的是什么。 已经检查了文档http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteflags,但找不到任何信息。
有什么想法吗?
【问题讨论】:
[OR]
是 RewriteCond 标志,而不是 RewriteRule 标志。
【参考方案1】:
[OR] 用于当您想要一个或另一个或另一个条件时触发重写。 否则默认行为是'AND' 所有的 RewriteConds 都必须为真才能触发规则。
【讨论】:
【参考方案2】:来自http://httpd.apache.org/docs/current/mod/mod_rewrite.html
ornext|OR
(或下一个条件)
使用它来将规则条件与本地 OR 而不是隐式 AND 组合。典型例子:
RewriteCond %REMOTE_HOST ^host1 [OR]
RewriteCond %REMOTE_HOST ^host2 [OR]
RewriteCond %REMOTE_HOST ^host3
RewriteRule ...some special stuff for any of these hosts...
【讨论】:
如果您将RewriteCond
视为条件语句中的子句,例如IF
,而将标志[OR]
视为逻辑||
,那么这对程序员来说是有意义的。
@YzmirRamirez 不完全一样,Apache 的 [OR] 的优先级高于隐式 AND - 大多数编程语言的 && 优先级高于 || - 结果,例如在 C 中 a && b || c && d
被评估为 (a && b) || (c && d)
而在 Apache 的 mod_rewrite 条件下反之亦然,详情请点击此处 ***.com/a/31572003/895077以上是关于.htaccess mod_rewrite 中的“或”标志的主要内容,如果未能解决你的问题,请参考以下文章
子域 mod_rewrite (htaccess) 到相对目录
将 .htaccess 转换为 nginx (mod_rewrite)
没有 mod_rewrite 的漂亮 URL,没有 .htaccess