我需要制作.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
感谢您的帮助。
何塞普
答案 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]
以使其成为永久重定向。浏览器会缓存永久重定向,从而阻止对服务器的无用请求,并强制谷歌等网站将其编入索引,就好像这两个网址是同一页面一样。