[英]htaccess mod_rewrite consolidation
有没有办法将以下两行合并为一行?
RewriteRule . /pages/article.php [L]
RewriteRule $ /pages/article.php [L]
由于这是一个类似的问题(整合htaccess指令),所以我也需要帮助将以下内容整合为一行:
SetEnvIfNoCase Referer "^http://www.example.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://www.example.com$" locally_linked=1
SetEnvIfNoCase Referer "^http://example.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://example.com$" locally_linked=1
提前致谢。
可以组合使用两个RewriteRule
指令,主要是因为第二个指令没有做任何特别有用的事情。 $
锚将始终出现在输入字符串中,因此该规则与任何input匹配。 第一条规则只有一个.
匹配任何一个字符,但由于它没有^$
锚,因此该字符可以在字符串中的任何位置。
本质上,这两个之和是要匹配任何带或不带字符的字符串。 可以简化为:
RewriteRule .* /pages/article.php [L]
.*
将匹配零个或多个字符,但不捕获它们以在变量中重用。 真正不需要测试$
锚。
如果您使用可选的分组()?
可以将SetEnvIfNoCase
全部合并()?
并使用/?
使斜杠为可选/?
。 自www.
以来,这应该与所有4种可能性匹配www.
是可选的,尾部的/
是可选的。
SetEnvIfNoCase Referer "^http://(www\.)?example\.com/?$" locally_linked=1
请注意,我已经逃脱了.
在正则表达式中使用,因为从技术上讲,它们在其他方面也被解释为元字符,即使从技术上讲,它们也与文字匹配.
正则表达式周围的双引号实际上并不需要,但也无害。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.