.htaccess 重定向语言。htaccess仅适用于根目录

.htaccess 重定向语言。htaccess仅适用于根目录,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,我试图从导航器中重定向访问者的语言,但只能从根目录中重定向。 我使用了以下代码: <IfModule mod_rewrite.c> # Force the "www." at the beginning of URLs #----------------- RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^$ RewriteCond %{HTTP_HOST} !^www\. [NC] Rewrit

我试图从导航器中重定向访问者的语言,但只能从根目录中重定向。 我使用了以下代码:

<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]
我在这个url www.mywebsite.com/?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en?lang=en等上发现了一个循环和我的网站错误

我的代码有什么问题

真的。
保罗。

像这样遵守你的规则:

    RewriteRule (.*) /?lang=en [QSA,R,L]
# 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)
来完成一个站点的两种语言。当然,它可以被限制为两种类似的语言。@Croises anubhava的回答允许他以后在不修改规则的情况下拥有更多的语言。现在更具活力了。非常感谢你的帮助。@anubhava Yeah完美!再次感谢您的回答和您的反应;-)!祝您今天过得愉快。