.htaccess mod重写301重定向

时间:2020-03-05 18:58:28  来源:igfitidea点击:

我想:
所有不包含文件名的链接(非.html,.jpg,.png,.css)都以状态301重定向到目录,例如:http://mysite.com/article-> http://mysite.com/article /
但是http://mysite.com/article/article-15.html不能重定向。
为了将斜杠添加到虚拟目录,我必须写入.htaccess的哪种规则表达式?

解决方案

回答

需要澄清:

给定URL:
http://服务器/路径/文件

是否将其重定向到:
http://服务器/路径/

还是重定向到:
http://服务器/路径/文件/

如:我们是否要重定向到父路径,还是只想添加一个斜线并假定目录不在当前路径之外?

回答

我认为以下方法可能有效:

RewriteEngine on   
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}// [R=301,L]

当涉及到mod_rewrite时,我无法确定是否要进行测试...

回答

MB的上述RewriteRule在`/ a'之类的路径上将失败,因为它需要在斜杠后至少匹配两个字符。此外,它仅与顶级目录URL匹配。

RewriteRule ^(([^\/]+\/)*[^\/\.]+)$ http://%{HTTP_HOST}// [R=301,L]

这样做的目的是减少历史污染/误报吗?