为什么前导斜杠与我的RewriteRule不匹配?

时间:2016-01-06 19:39:41

标签: php apache .htaccess mod-rewrite openshift

我希望我错过了一些愚蠢的事情。

我正在尝试使用OpenShift免费托管服务上的PHP 5.4盒式磁带在Apache 2.2上使用.htaccess重定向URL。

这与URI /固定链接/ a123匹配(请注意规则的过滤模式中缺少前导斜杠):

RewriteEngine On
RewriteRule permalink/a.*$ /permalink/b [R=301,L]

这与URI /固定链接/ a123不匹配(请注意规则的过滤模式中的前导斜杠):

RewriteEngine On
RewriteRule /permalink/a.*$ /permalink/b [R=301,L]

那么我有什么愚蠢的错误?

感谢。

1 个答案:

答案 0 :(得分:4)

用于匹配mailto:中的模式的URI通过删除前导RewriteRule在每个目录上下文(在htaccess文件或<Directory>容器中)进行规范化。因此,如果请求的URL是:

/

从文档根目录中的htaccess文件中,用于匹配规则的URI是http://example.com/web/permalink/123 。但是在web/permalink/123文件夹中的htaccess文件中,URI为web等。

因此,你不能让你的模式以permalink/123开头,因为它们在htaccess文件的上下文中被剥离了。