繁体   English   中英

htaccess mod_rewrite合并

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM