【问题标题】:.htaccess mod rewrite 301-redirect.htaccess mod 重写 301-redirect
【发布时间】:2010-09-10 01:05:26
【问题描述】:

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

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

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

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

    当谈到 mod_rewrite 时,如果不进行测试,我永远无法确定...

    【讨论】:

      【解决方案2】:

      需要澄清:

      给定网址: http://server/path/file

      是否会重定向到: http://server/path/

      或者它会被重定向到: http://server/path/file/

      如:您希望重定向转到父路径,还是只想添加一个斜杠并假定当前路径之外的目录?

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2012-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-31
          • 1970-01-01
          相关资源
          最近更新 更多