【问题标题】:redirect language .htaccess only for root重定向语言 .htaccess 仅适用于 root
【发布时间】:2015-01-09 16:16:31
【问题描述】:

我正在尝试从他的导航器中重定向访问者的语言,但仅从根目录。 我用过这段代码:

<IfModule mod_rewrite.c>
# Force the "www." at the beginning of URLs #-----------------
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^$
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Language redirection  #----------
# French
    RewriteCond %{REQUEST_URI} ^/$
    RewriteCond %{HTTP:Accept-Language} ^fr [NC]
    RewriteRule (.*) /?lang=fr [QSA,L]
# English
    RewriteCond %{REQUEST_URI} ^/$
    RewriteCond %{HTTP:Accept-Language} ^en [NC]
    RewriteRule (.*) /?lang=en [QSA,L]

它有效,但并不完美;我有 2 个问题; 第一个,url并没有真正重写;参数 ?lang=en 没有写在 url 中;即使页面是英文的好页面。

第二个问题是,如果我有一个 R=302 或 301 像这样:

    RewriteRule (.*) /?lang=en [QSA,R,L]

我在这个网址 www.mywebsite.com/?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang 上有一个循环和我的网站错误=zh 等等...

我的代码有什么问题?

真诚的。 保罗。

【问题讨论】:

    标签: .htaccess mod-rewrite redirect


    【解决方案1】:

    保持这样的规则:

    # Force the "www." at the beginning of URLs #-----------------
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^$
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    # make english default lang
    RewriteCond %{HTTP:Accept-Language} !^(en|fr) [NC]
    RewriteCond %{QUERY_STRING} !(?:^|&)lang=(?:en|fr) [NC]
    RewriteRule ^/?$ /?lang=en [QSA,L,R]
    
    # Language redirection  #----------
    RewriteCond %{HTTP:Accept-Language} ^(en|fr) [NC]
    RewriteCond %{QUERY_STRING} !(?:^|&)lang=(?:en|fr) [NC]
    RewriteRule ^/?$ /?lang=%1 [QSA,L,R]
    

    【讨论】:

    • 我认为你必须使用 (fr|en) 来为 2 种语言的网站做这件事
    • 是的,当然可以限制为 2 种语言。
    • @Croises anubhava 的回答让他以后无需修改规则就可以拥有更多语言。现在更有活力了。
    • 非常感谢您的帮助。
    • @anubhava 是的,完美!再次感谢您的回答和您的反应;-)!祝你有美好的一天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2016-01-10
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多