.htaccess mod 重写 301-重定向
-
09-06-2019 - |
题
我想:所有不包含文件名(不是 .html、.jpg、.png、.css)的链接都会以状态 301 重定向到目录,例如: http://mysite.com/article -> http://mysite.com/article/但 http://mysite.com/article/article-15.html 不重定向。我必须向 .htaccess 写入什么规则表达式才能将斜杠添加到虚拟目录?
解决方案
我认为以下方法可能有效:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
当谈到 mod_rewrite 时,如果没有测试,我永远无法确定......
其他提示
需要澄清:
给定网址:http://服务器/路径/文件
是否会重定向到:http://服务器/路径/
或者它是否被重定向到:http://服务器/路径/文件/
如:您是否希望重定向到父路径,或者您只想添加斜杠并假定当前路径之外的目录?
上面的 MB 的 RewriteRule 将在类似的路径上失败 /a
因为它需要匹配斜杠后至少两个字符。此外,它仅匹配顶级目录 URL。
RewriteRule ^(([^\/]+\/)*[^\/\.]+)$ http://%{HTTP_HOST}/$1/ [R=301,L]
这样做的目的是为了减少历史污染/漏报吗?
不隶属于 StackOverflow