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

J. *_*ger 1 php apache .htaccess mod-rewrite openshift

我希望我错过了一些愚蠢的东西。

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

这与 URI /permalink/a123 匹配(注意规则的过滤器模式中缺少前导斜杠):

RewriteEngine On
RewriteRule permalink/a.*$ /permalink/b [R=301,L]
Run Code Online (Sandbox Code Playgroud)

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

RewriteEngine On
RewriteRule /permalink/a.*$ /permalink/b [R=301,L]
Run Code Online (Sandbox Code Playgroud)

那么我有什么愚蠢的事情错了?

谢谢。

Jon*_*Lin 5

用于匹配 aRewriteRule中模式的 URI<Directory>通过删除前导/. 所以如果请求的 URL 是:

http://example.com/web/permalink/123
Run Code Online (Sandbox Code Playgroud)

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

因此,您不能让您的模式以 a 开头,/因为它们是从 htaccess 文件上下文中的 URI 中剥离的。