0

该站点上有一些包含 html 文件的目录,例如:

site.com/folderone/index.html
site.com/foldertwo/index.html

它可以通过以下链接获得:

site.com/folderone
site.com/foldertwo

现在所有这些目录都移动到 /old-pages:

site.com/old-pages/folderone/index.html
site.com/old-pages/foldertwo/index.html

但旧链接应该可用,所以 .htaccess 文件:

RewriteEngine on
RewriteRule ^folde(.*)$ /old-pages/folde$1 [L]

它重写了正确的site.com/folderone/site.com/folderone/index.html

问题是:对于site.com/folderone它不是重写而是重定向到site.com/old-pages/folderone/

4

1 回答 1

1

重定向可能是由于 mod_dir 和DirectorySlash指令而发生的,该指令重定向对缺少尾部斜杠的目录的请求,以便尾部斜杠在那里。发生这种情况是有充分理由的,因为没有尾随斜线存在信息披露安全问题。

您可以做些什么来避免重定向,或者将其关闭(不推荐):

DirectorySlash Off

或者通过 mod_rewrite 包含斜线,这样两个模块就不会在同一个请求中相互干扰:

RewriteRule ^folder([^/]+)$ /folder$1/ [L,R=301]

您必须在其他重写规则之前添加它,以便首先应用它。然后你的其他规则应该起作用。

于 2013-09-09T14:30:34.410 回答