【问题标题】:redirecting sub-sub pages to another website with the same structure将子子页面重定向到具有相同结构的另一个网站
【发布时间】:2017-09-05 16:51:03
【问题描述】:

我们最近接管了一个域,将一个网站一分为二。具有自动生成 url 的网站已移至另一个域,但仍有多个用户拥有先前生成的链接。因此,我们必须设置重定向,这在技术上运行良好。

重定向 302 /base1 https://newdomain/base1

结果我们得到: https://olddomain/base1/test1 -> https://newdomain/base1/test1

这正是我们正在努力实现的目标,所以到目前为止一切听起来都很棒。不幸的是,出现了一个新问题,显然现在我们必须实现以下目标:

https://olddomain/base1 -> https://olddomain/ 然后其余的应该像现在一样工作。我不太清楚如何实现这个重定向。

E:为了使其更具可读性。我根据@anubhava 对以下内容的回答进行了更新:

RewriteRule ^base1/?$ / [L,NC,R=302]

RewriteRule ^base1(/.*)?$ https://newdomain/$0 [L,NC,NE,R=302]

Redirect 302 /base1 https://newdomain/base1

我正在尝试达到以下结果:

olddomain/base1 -> olddomain
olddomain/base1/url1 -> newdomain/base1/url1
olddomain/base1/url1/url2 -> newdomain/base1/url1/url2

谢谢, S.

【问题讨论】:

    标签: .htaccess http redirect


    【解决方案1】:

    您可以在现有规则之前添加另一条规则,但必须为此使用 mod_rewrite 规则:

    RewriteEngine On
    
    RewriteRule ^base1/?$ / [L,NC,R=302]
    
    RewriteRule ^base1(/.*)?$ https://newdomain/$0 [L,NC,NE,R=302]
    

    清除浏览器缓存后或在其他浏览器中测试。

    【讨论】:

    • 我检查了它,但它不起作用(另外,它是否意味着是 RewriteRule ^base1/?$ olddomain [L,NC,R=302] 而不是?)没关系我试用的版本,olddomain/base1 仍然转到newdomain/base1,它应该转到olddomain。只是为了确认 - 已清除缓存进行测试。
    • 好的,我已经更新了第一条规则。如果您在所有其他规则之前保留这些规则并完全清除浏览器缓存,那么它没有理由无法工作。
    • 还是不行。我检查了另一个浏览器并刷新了 dns。 RewriteRule ^base1/?$ / [L,NC,R=302] RewriteRule ^base1(/.*)?$ newdomain/$0 [L,NC,NE,R=302] 重定向 302 /base1 newdomain/base1 oldomain/base1仍然去 newdomain/base1,而不是去 olddomain
    • 将第一条规则更改为RewriteRule ^base1/?$ / [L,NC,R=307] 并在Chrome 开发工具中再次测试以确保您是否获得http 状态码307。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2015-01-20
    • 1970-01-01
    • 2023-03-20
    • 2022-11-02
    • 2021-09-27
    • 2021-10-28
    相关资源
    最近更新 更多