【发布时间】:2017-08-07 12:21:05
【问题描述】:
我正在将网站更改为多语言网站:
example.com/en/view-item/sku/
example.com/es/view-item/sku/
example.com/de/view-item/sku/
并且需要将 /fr/ 部分作为变量传递。
这个问题给出了很好的答案:htaccess - skip first folder
不过,在我的htaccess文件中,我还有其他规则,例如:
RewriteRule view-item/([^/.]+)/?$ /shop/view.php?productcode=$1
RewriteRule product-category/([^/.]+)/?$ /shop/products.php?selectedcat=$1
问题是,使用...
重写规则 ^(en|fr|es|de|nl|it)(/.*)$ $2?language=$1 [NC,L,QSA]
...当路径未被 htaccess 编辑时有效,例如:
www.example.com/fr/shop/view.php?productcode=abc123
这添加了语言变量就ok了。
但是对于
www.example.com/fr/view-item/sku/
它不起作用,因为 htaccess 正在再次改变它。我猜在它考虑了 /fr/ 之后,url 将如下所示:
www.example.com/fr/view-item/sku/
到
www.example.com/view-item/sku/?language=fr
我对 htaccess 的了解不足以知道使用什么代码再次传递语言变量。
我也试过了……
重写规则 ^(en|fr|es|de|nl|it)(/.*)$ $2/$1/ [NC,L,QSA]
RewriteRule view-item/([^/.]+)/([^/.]+)/?$ /shop/view.php?productcode=$1&language=$2
这可行,但不适用于这些网址...
www.example.com/fr/
www.example.com/fr/shop/view.php?productcode=abc123
我假设第一个示例可以工作,如果我可以在稍后编辑 /view-item/ 文件夹时传递 ?language=$1。
提前谢谢你。
【问题讨论】:
标签: .htaccess mod-rewrite url-rewriting