1

このような質問が多かったことは知っていますが、それでも問題を解決することはできません。

次の.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]

誰かが問題の場所を教えてくれることを願っています。

4

1 に答える 1

1

を含める必要があります。そうしないと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]
于 2012-09-20T18:08:25.457 に答える