【问题标题】:Overwriting 301 Redirect for specific pages覆盖特定页面的 301 重定向
【发布时间】:2019-02-26 06:43:38
【问题描述】:

我正在将旧域移至新域,但是某些旧页面不可用。因此,新域上仍然可用的页面需要重定向到新的现有页面,而所有其他页面都需要重定向到整个域。我有以下重定向规则:

更新

//Specific
RedirectMatch 301 ^/(title_1/?)$ https://www.website.com/$1
RedirectMatch 301 ^/(title_2/?)$ https://www.website.com/$1
RedirectMatch 301 ^/(title_3/?)$ https://www.website.com/$1
...

//Overall
RedirectMatch 301 ^/(.*)$ https://www.website.com/blog

但是,总体第一条规则会覆盖为现有子页面制定的所有其他以下规则。大约有 200 个子页面被添加到 htaccess 中。另外我需要提到的是,整个网站都在 domain.com/blog 上运行,但所有重定向的子页面都只是 domain.com/title_name_1。

我需要指定的 200 页不被第一条规则覆盖。因此不会重定向到 /blog。

我有点迷失了。任何帮助表示赞赏:)

谢谢

【问题讨论】:

    标签: .htaccess redirect url-rewriting url-redirection


    【解决方案1】:

    更改规则的顺序,更好地为所有重定向使用相同的指令RedirectMatch

    //Example of Redirect for specific pages (about 200+) 
    RedirectMatch 301 ^/(title_1|title_2|title_3)/?$ https://www.website.com/$1 
    
    RedirectMatch 301 ^/(category/title_name_2/?)$ https://www.website.com/$1 
    
    //Overall redirect for not specified pages in htaccess
    RedirectMatch 301 ^ https://website.com/blog/
    

    确保清除浏览器缓存或使用新浏览器测试此更改。

    【讨论】:

    • 感谢您的帮助。这仍然不起作用。它将所有页面重定向到 /blog/page_title。但是,它应该只将指定的页面重定向到 /blog/page_title 所有其他页面应该只转到 /blog 而不添加页面标题。我这样做了RedirectMatch 301 ^/(.*)$ https://website.com/blog/ ,但它仍然会覆盖所有其他规则。
    • 我更新了它。是的,我使用了不同的浏览器来测试它。
    • 是的,我想我发现了错误(title_1?)它应该是(title_1/?)
    • 好的,在完全清除浏览器缓存后再次尝试我更新的规则。
    • 我把它更新到了第一个版本。它现在工作。请参阅我之前的评论 :) 非常感谢!
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2012-10-11
    • 2023-02-24
    • 2017-03-06
    • 2013-07-25
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多