7

これは私が今まで試したことです:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) $1.php [L]

RewriteCond %{QUERY_STRING} ^id=([0-9]{1})$
RewriteRule ^article\.php$ /article/%1 [L]

基本的に、ルールの最初のセットは URL を something.php から something に変換します。

2 番目のルール セットは、article.php?id=NUMBER を含むものをすべて /article/NUMBER に置き換えることになっています。

アパッチは次のように報告しています。

AH00124: Request exceeded the limit of 10 internal redirects due to probable 
configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary.
4

2 に答える 2

0

^article\.php$前のルールによって書き換えられた URI ではなく、実際のリクエストからのものであることを確認する必要があります。したがって、内部リダイレクトの ENV チェックを追加するか、`%{THE_REQUEST} と照合することができます。

あなたの選択:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^id=([0-9]{1})$
RewriteRule ^article\.php$ /article/%1 [L]

また

RewriteCond %{THE_REQUEST} \ /+article\.php\?id=([0-9]{1})(\ |$)
RewriteRule ^ /article/%1 [L]
于 2013-11-08T06:29:05.450 に答える