如何在使用重写规则更改深层文件夹名称后重定向 URL
How to redirect urls after deep level folder name change using rewrite rule
我们的网站跨越多种语言(总共 16 种语言),因此 url 的开头可以包含 16 个不同的子文件夹。我们在 lang/locale 文件夹之外有一个子文件夹已更改名称,所以我想知道如何重定向到涉及新子文件夹名称的 urls,同时也重定向到 16 个不同的 lang/locale 子文件夹?
这是新旧 url 的示例:
旧 urls:
www.something.com/en_US/product/family/parent/child.html
www.something.com/ru_RU/product/family/parent/child/model.html
新 urls:
www.something.com/en_US/product/family/parent/child2.html
www.something.com/ru_RU/product/family/parent/child2/model.html
RewriteEngine On
RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/([\w_]+)\.html$ //product/family/parent/2.html
RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/([\w_]+)/([\w_]+)\.html$ //product/family/parent/2/.html
这可能对你有用,假设你真的想将 child_folder
重命名为 child_folder2
(bikes
-> bikes2
, barbies
-> barbies2
,等等)。
如果您的目标更复杂(bikes
-> bicycles
、barbies
-> dolls
),则需要通过服务器端编程语言,但 htaccess 可以提供帮助。你可以做类似
RewriteEngine On
RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/(child)\.html$ director.php?lang=&old=
但是如果直接的正则表达式解决方案是合适的,您应该避免这样做,因为没有必要同时涉及两者并在已经涉及一个时增加服务器的负载。
我们的网站跨越多种语言(总共 16 种语言),因此 url 的开头可以包含 16 个不同的子文件夹。我们在 lang/locale 文件夹之外有一个子文件夹已更改名称,所以我想知道如何重定向到涉及新子文件夹名称的 urls,同时也重定向到 16 个不同的 lang/locale 子文件夹?
这是新旧 url 的示例:
旧 urls:
www.something.com/en_US/product/family/parent/child.html www.something.com/ru_RU/product/family/parent/child/model.html
新 urls:
www.something.com/en_US/product/family/parent/child2.html www.something.com/ru_RU/product/family/parent/child2/model.html
RewriteEngine On
RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/([\w_]+)\.html$ //product/family/parent/2.html
RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/([\w_]+)/([\w_]+)\.html$ //product/family/parent/2/.html
这可能对你有用,假设你真的想将 child_folder
重命名为 child_folder2
(bikes
-> bikes2
, barbies
-> barbies2
,等等)。
如果您的目标更复杂(bikes
-> bicycles
、barbies
-> dolls
),则需要通过服务器端编程语言,但 htaccess 可以提供帮助。你可以做类似
RewriteEngine On
RewriteRule ^([a-zA-Z]{2}_[a-zA-Z]{2})/product/family/parent/(child)\.html$ director.php?lang=&old=
但是如果直接的正则表达式解决方案是合适的,您应该避免这样做,因为没有必要同时涉及两者并在已经涉及一个时增加服务器的负载。