0

私はapache mod-rewriteで次の問題を抱えています(おそらく単純なものですが、私はそれを理解していません...)

次のように、URL パスを 2 文字の部分 (国コード) で開始する必要があります。

http://www.example.com/se/

URL がこのパターンに一致しない場合は常に、.htaccess上記のように固定の開始アドレスにリダイレクトする必要がありますhttp://www.example.com/se/

また、末尾のスラッシュで終わらない URL をリダイレクトする必要もあります (つまり、リダイレクトする必要がhttp://www.example.com/seあります ...)

次の行を my に入れました.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !^/[a-z]{2}/
RewriteRule ^(.*)$ se/ [R,L]

ただし、リクエストhttp://www.example.com/se/もリダイレクトされるため、無限再帰が発生します。RewriteCondこの場合、なぜ が true になるのかわかりません。

4

1 に答える 1

0

クエリ文字列 (これは URL の の後のすべてのものです?) が で始まっていないかどうかを確認しています/[a-z]{2}/。あなたの例では、そうではありません。したがって、リダイレクト後、クエリ文字列はまだそれで始まらないため、同じ URL に再度リダイレクトされます。そして、何度も何度も。

あなたが探しているのは%{REQUEST_URI}代わりだと思います:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/
RewriteRule ^(.*)$ se/ [R,L]
于 2012-08-28T17:43:08.653 に答える