如何将所有.html页面从文件夹和子文件夹重定向到主语言子文件夹?

时间:2017-12-23 16:07:55

标签: .htaccess redirect

我需要制作.htaccess 301重定向以获得下一个结果

原始网址
example.com/en/pageX.html
example.com/fr/pageX.html
最终网址
example.com/en/pageX.html
example.com/fr/pageX.html

同时:

原始网址
example.com/en/X/pageX.html
example.com/fr/X/pageX.html
最终网址
example.com/en/pageX.html
example.com/fr/pageX.html

同时也是:

原始网址
example.com/en/X/X/pageX.html
example.com/fr/X/X/pageX.html
最终网址
example.com/en/pageX.html
example.com/fr/pageX.html

同时也是:

原始网址
example.com/en/X/X/X/pageX.html
example.com/fr/X/X/X/pageX.html
最终网址
example.com/en/pageX.html
example.com/fr/pageX.html

例如和总结:

原始网址
example.com/en/food.html
example..com / FR / nourriture.html
example..com / EN /食品/ fruits.html
example.com/fr/nourriture/fruits.html
example.com/en/food/fruits/apples.html
example.com/fr/nourriture/fruits/pommes.html
example.com/en/food/fruits/apples/apple_golden.html
example.com/fr/nourriture/fruits/pommes/pomme_golden.html
最终网址
example.com/en/food.html
example.com/fr/nourriture.html
example.com/en/fruits.html
example.com/fr/fruits.html
example.com/en/apples.html
example.com/fr/pommes.html
example.com/en/apple_golden.html
example.com/fr/pomme_golden.html

感谢您的帮助。

何塞普

1 个答案:

答案 0 :(得分:2)

您可以使用mod_rewrite删除语言标识符与实际页面名称之间的所有文件夹,并重定向浏览器以显示新的URL。有关详细信息,请参阅the documentation

RewriteEngine on
RewriteRule ^(en|fr)/.*?([^/]+\.html)$ $1/$2 [R,L]

此规则将路径开头的语言标记与^(en|fr)匹配,并将其放入捕获组1.然后我们匹配斜杠和尽可能少的字符(/.*?)。最后,它将页面名称与([^/]+\.html)$匹配,并将其放入捕获组2.最后,我们使用组替换($1$2)将url重新组合在一起,并强制进行临时重定向[R]标志。当规则按预期工作时,您可以将重定向标志更改为[R=301]以使其成为永久重定向。浏览器会缓存永久重定向,从而阻止对服务器的无用请求,并强制谷歌等网站将其编入索引,就好像这两个网址是同一页面一样。