【问题标题】:Redirecting All Subdirectories to Single Location将所有子目录重定向到单个位置
【发布时间】:2018-05-23 17:40:00
【问题描述】:

我正在使用.htaccess 重写我的子目录或指向单个位置的链接中的其他 URL 信息。我不太清楚如何表达这一点,所以我将在下面提供示例。

OLD URL NEW URL
oldsite.com/shop newsite.com/shop
oldsite.com/shop/something newsite.com/shop
oldsite.com/shop/category/product/123.html newsite.com/shop
oldsite.com/shop/landingpage newsite.com/shop

oldsite 仍在执行许多附加功能,因此我只希望 /shop(以及之后的任何内容)重定向到 newsite。

如果在 .htaccess 之外的其他地方更容易做到这一点,那就太好了。

【问题讨论】:

    标签: wordpress .htaccess url redirect url-rewriting


    【解决方案1】:

    这可以通过 mod_rewrite 轻松完成:

    RewriteEngine On
    RewriteRule ^shop https://newsite.com/shop [R=301,L]
    

    这将查看 URL,如果它以“shop”开头(前导 / 被自动忽略),则重定向到新 URL。 请注意,它还会重定向 /shopping。如果这不是你想要的,你就必须修改模式。

    它将使用301 Moved Permanently HTTP 状态代码,但您可以通过修改 R 标志将其更改为另一个 3XX 代码。

    【讨论】:

    • 您好,感谢您这么快回复我!当我为 oldsite.com/shop/product123 尝试此操作时,它会将我带到 newsite.com/shopproduct123 而不仅仅是 newsite.com/shop
    • 这很奇怪,它不应该(我刚刚测试过它以确保我没有记错它)。您的 .htaccess 中是否有类似“重定向永久 /shop newsite.com/shop”的内容?因为这些会添加尾随字符,而 RewriteRule 不会,除非您明确说明(通过在重定向 URL 中使用 (...) 组和 $1)。
    • @rukristin 还要确保您已清除浏览器缓存。如果您之前尝试过(错误的?)301,那么这些将被浏览器缓存。由于这个原因(不被浏览器缓存),使用 302(临时)重定向测试通常更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    相关资源
    最近更新 更多