1

私は多言語 Web サイトに取り組んでおり、URL の書き換えに少し問題があります。

私はこのようなものを持っている必要があります:

1) mysite.com/en
2) mysite.com/en/product-one
3) mysite.com/en/product-one/id25/title-page-fake.html
4) mysite.com/en/login.php

URL は次の場所にリダイレクトされます。

1) mysite.com/index.php
2) mysite.com/index.php
3) mysite.com/item.php?id=25
4) mysite.com/login.php

現在、私の .htaccess ファイルは次のようになっています。

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.+/{0,0})$ $1/index.php [NC]
RewriteRule ^([a-z0-9\-]+/)(.*)$ $2 [NC]
RewriteRule ^id(\d+)\/.*$ item.php?id=$1&%{QUERY_STRING} [L]

動作しますが、例外がスローされます:

構成エラーの可能性があるため、要求が 10 個の内部リダイレクトの制限を超えました。必要に応じて、'LimitInternalRecursion' を使用して制限を増やします。「LogLevel debug」を使用してバックトレースを取得します。

4

1 に答える 1

1

このルールを試してください:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# requirements 1 & 2
RewriteRule ^en(/product-one)?/?$ /index.php [L,NC]

# requirement # 3
RewriteRule ^en/product-one/id([0-9]+) /item.php?id=$1 [L,NC,QSA]

# requirement # 4
RewriteRule ^en/([^.]+\.php)$ /$1 [L,NC]

それが機能するかどうかを教えてください。他のルールも提案できます。

于 2013-11-01T13:19:52.067 に答える