.htaccess语言子域会影响其他规则

.htaccess语言子域会影响其他规则,.htaccess,mod-rewrite,subdomain,.htaccess,Mod Rewrite,Subdomain,我知道有很多这样的问题,但我仍然不能解决这个问题 我正在使用以下.htaccess代码更改语言: RewriteCond %{HTTP_HOST} ^(en|us)\.domain\.com$ # Create an environment variable to remember the language: RewriteRule (.*) - [QSA,E=LANGUAGE:%1] # Now check if the LANGUAGE is empty (= doesn't exist)

我知道有很多这样的问题,但我仍然不能解决这个问题

我正在使用以下.htaccess代码更改语言:

RewriteCond %{HTTP_HOST} ^(en|us)\.domain\.com$
# Create an environment variable to remember the language:
RewriteRule (.*) - [QSA,E=LANGUAGE:%1]
# Now check if the LANGUAGE is empty (= doesn't exist)
RewriteCond %{ENV:LANGUAGE} ^$
# If so, create the default language (=en):
RewriteRule (.*) - [QSA,E=LANGUAGE:en]
# WHATEVER THE LANGUAGE ADD IT TO THE URI:
RewriteRule (.*) $1?language=%{ENV:LANGUAGE} [QSA]
这将在地址末尾添加
?language=variable

但由于某些原因,类似以下的其他规则会生成内部服务器错误:

RewriteRule ^([0-9]+)/([^/]+)(|/)$ code.php?id=$1&title=$2 [L]
与此类似的简单规则(不添加变量)可以很好地工作:

RewriteRule ^stats(|/)$ stats.php [L]

我希望有人能告诉我问题出在哪里。

您需要包含
QSA
,否则您的语言参数会丢失:

RewriteRule ^([0-9]+)/([^/]+)(|/)$ code.php?id=$1&title=$2 [L,QSA]
这个规则没有错,500错误可能是由
code.php


看起来您拥有的语言规则就是循环,除了将
QSA
添加到添加到查询字符串的其他规则之外,您还需要排除附加“language=”的情况。因此,在最后一条语言规则之上,添加以下内容:

RewriteCond %{QUERY_STRING} !language
所以它看起来像:

RewriteCond %{QUERY_STRING} !language
# WHATEVER THE LANGUAGE ADD IT TO THE URI:
RewriteRule (.*) $1?language=%{ENV:LANGUAGE} [QSA]

您需要包含
QSA
,否则您的语言参数将丢失:

RewriteRule ^([0-9]+)/([^/]+)(|/)$ code.php?id=$1&title=$2 [L,QSA]
这个规则没有错,500错误可能是由
code.php


看起来您拥有的语言规则就是循环,除了将
QSA
添加到添加到查询字符串的其他规则之外,您还需要排除附加“language=”的情况。因此,在最后一条语言规则之上,添加以下内容:

RewriteCond %{QUERY_STRING} !language
所以它看起来像:

RewriteCond %{QUERY_STRING} !language
# WHATEVER THE LANGUAGE ADD IT TO THE URI:
RewriteRule (.*) $1?language=%{ENV:LANGUAGE} [QSA]

当我删除负责更改语言的代码时,问题就消失了。我确信code.php很好。所有传递从链接中提取的附加变量的规则都会发生这种情况。我可以使用cookies来改变语言,但这将是一个愚蠢的解决方法,而没有真正解决问题。太棒了,它正在工作。我总是有修改规则的问题。对我来说,这是创建网站最困难的部分:当我删除所提供的负责更改语言的代码时,问题就消失了。我确信code.php很好。所有传递从链接中提取的附加变量的规则都会发生这种情况。我可以使用cookies来改变语言,但这将是一个愚蠢的解决方法,而没有真正解决问题。太棒了,它正在工作。我总是有修改规则的问题。对我来说,这是创建网站最困难的部分:D