我想:所有不包含文件名(不是 .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]

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top