我正在将网站更改为多语言网站:
example.com/en/view-item/sku /
example.com/es/view-item/sku /
example.com/de/view-item/sku /
需要将/ fr / part作为变量传递。
这个问题给出了一个非常好的答案:htaccess - skip first folder
但是,在我的htaccess文件中,我还有其他规则,例如:
RewriteRule view-item /([^/.]+)/?$ /shop/view.php?productcode=$1
RewriteRule product-category /([^/.]+)/?$ /shop/products.php?selectedcat=$1
问题是,使用......
RewriteRule ^(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的了解不足以知道用什么代码再次传递语言变量。
我也试过......
RewriteRule ^(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。
提前谢谢。
答案 0 :(得分:0)
我刚刚找到了一个解决办法,基本上将上面的内容按不同顺序排列:
RewriteRule ^(en | fr | es | de | nl | it)/ view-item /([^/.]+)(/.*)$ /$1/shop/view.php?productcode=$2 [ NC,L,QSA]
RewriteRule view-item /([^/.]+)(/.*)$ /shop/view.php?productcode=$1
RewriteRule ^(en | fr | es | de | nl | it)(/。*)$ $ 2?language = $ 1 [NC,L,QSA]
虽然这不是我原来的问题所需要的,但是我认为我会在这里发布它。如果有人有任何更好的解决方案,请发帖,谢谢。
答案 1 :(得分:0)
有这样的话:
RewriteEngine On
RewriteRule ^(en|fr|es|de|nl|it)(/.*)$ $2?language=$1 [NC,L,QSA]
RewriteRule ^view-item/([^/.]+)/?$ /shop/view.php?productcode=$1 [L,QSA,NC]
RewriteRule ^product-category/([^/.]+)/?$ /shop/products.php?selectedcat=$1 [L,QSA,NC]