【问题标题】:How to redirect urls after deep level folder name change using rewrite rule如何在使用重写规则更改深层文件夹名称后重定向 url
【发布时间】:2015-07-10 14:57:03
【问题描述】:

我们的网站跨越多种语言(共 16 种),因此网址的开头可以包含 16 个不同的子文件夹。我们在 lang/locale 文件夹之外有一个已更改名称的子文件夹,所以我想知道如何重定向到涉及新子文件夹名称的 url,同时还重定向到 16 个不同的 lang/locale 子文件夹?

以下是旧网址和新网址的示例:

旧网址:

www.something.com/en_US/product/family/parent/child.html www.something.com/ru_RU/product/family/parent/child/model.html

新网址:

www.something.com/en_US/product/family/parent/child2.html www.something.com/ru_RU/product/family/parent/child2/model.html

【问题讨论】:

    标签: regex apache http-status-code-301 url-redirection


    【解决方案1】:
    RewriteEngine On
    RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/([\w_]+)\.html$ /${1}/product/family/parent/${2}2.html
    RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/([\w_]+)/([\w_]+)\.html$ /${1}/product/family/parent/${2}2/${3}.html
    

    这可能对你有用,假设你真的想将 child_folder 重命名为 child_folder2bikes -> bikes2barbies -> barbies2 等)。

    如果您的目标更复杂(bikes -> bicyclesbarbies -> dolls),则需要通过服务器端编程语言来处理,但 htaccess 可以提供帮助.你可以做类似的事情

    RewriteEngine On
    RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/(child)\.html$ director.php?lang=${1}&old=${2}
    

    但是,如果直接的正则表达式解决方案是合适的,您应该避免这样做,因为没有必要同时涉及两者,并且在已经涉及一个的情况下会增加服务器上的负载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      相关资源
      最近更新 更多