【问题标题】:Redirecting old .html page to new without html extension page?将旧的 .html 页面重定向到没有 html 扩展页面的新页面?
【发布时间】:2012-08-09 04:56:57
【问题描述】:

我刚刚更改了我的 wordpress 网站中的永久链接。

我的旧链接是这样的,

http://www.sitename.com/category/postname.html

现在是新链接

http://www.sitename.com/category/postname/

我在旧链接处收到 404 错误,如何将所有 .html 页面重定向到带有 .htaccess 的新非 .html 页面?

【问题讨论】:

    标签: html wordpress .htaccess redirect


    【解决方案1】:

    在文档根目录的 htaccess 文件中,在您的 wordpress 规则之前添加这些

    RedirectMatch 301  ^/([^/]+)/([^/.]+)\.html$ /$1/$2/
    RedirectMatch 301  ^/([^/]+)/([^/]+)/([^/.]+)\.html$ /$1/$2/$3/
    

    如果需要通过主机来限制,可以使用mod_rewrite:

    RewriteCond %{HTTP_HOST} sitename.com [NC]
    RewriteRule ^([^/]+)/([^/.]+)\.html$ /$1/$2/ [R=301,L]
    
    RewriteCond %{HTTP_HOST} sitename.com [NC]
    RewriteRule ^([^/]+)/([^/]+)/([^/.]+)\.html$ /$1/$2/$3/ [R=301,L]
    

    【讨论】:

    • 非常感谢,子类别页面 sitename.com/category/subcategory/page.html 到 sitename.com/category/subcategory/page/ 的工作正常
    • 太好了。非常非常感谢你。哪个更适合seo?由主机限制?
    • @JohnRock 没有区别。仅当您在同一文档根目录中提供多个主机时才需要按主机进行限制。例如,您有一个站点 wordpress.site.com 和另一个 blog.blogsite.org,它们都托管在同一个文档根目录中,但您不希望博客站点受到影响,您可以使用 RewriteCond 来制作规则仅适用于第一个主机。
    • 再次感谢@JonLin
    • 嗨乔恩。我无法让它为https://george.doig.com.au/eulogy.html 工作。我在.htaccess 中有以下内容:http://pastebin.com/1R9KviY8 - 该站点是子域多站点。
    【解决方案2】:

    在htaccess文件中,放:

    Redirect 301  /postname.html  http://www.sitename.com/category/postname/
    

    【讨论】:

      【解决方案3】:

      Jon Lin 接受的答案(上图)给我带来了一些问题。 这是我的结果,效果很好,而且更紧凑。

      它适用于路径中的目录和目录。

      Oneliner:

      RedirectMatch 301  ^/(.*)\.html$ /$1
      

      或者如果您需要它受主机限制:

      RewriteCond %{HTTP_HOST} myDomain.com [NC]
      RewriteRule ^(.*)\.html$ /$1 [R=301,L]
      

      示例:

      【讨论】:

        猜你喜欢
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 2012-10-15
        相关资源
        最近更新 更多