【问题标题】:htaccess - Skip first folder and pass as variablehtaccess - 跳过第一个文件夹并作为变量传递
【发布时间】: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


    【解决方案1】:

    像这样:

    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]
    

    【讨论】:

      【解决方案2】:

      我刚刚找到了解决此问题的方法,基本上将上述内容按不同的顺序排列:

      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

      重写规则 ^(en|fr|es|de|nl|it)(/.*)$ $2?language=$1 [NC,L,QSA]

      虽然这不是我最初的问题所需要的,但我想我会在这里发布它。如果有人有更好的解决方案,请发表,谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多