1

この質問をした後Htaccess URLRewrite to another map それはうまくいきますが、今は余分な「マップ」を追加したいのですが、うまくいきません。

私の .htaccess ファイル:

ErrorDocument 404 /v2/404.php
ErrorDocument 404 /v2/505.php

RewriteEngine on

RewriteRule ^error/([^/]+)/?$ error.php?id=$1 [L,QSA,NC]

RewriteRule ^email/([^/]+)/?$ email.php?id=$1 [L,QSA,NC]

RewriteRule ^activate/([^/]+)/?$ activate.php?code=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^werknemer/([^/]+)/?$ werknemer/$1.php [L,QSA,NC]

RewriteRule ^klanten/([^/]+)/?$ klanten/$1.php [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.*)$ $1.php [L]

常に最後は機能しませんが、RewriteRule ^klanten/ は機能しません。RewriteRule ^klanten/ の後に RewriteRule ^werknemer/ を実行すると、RewriteRule ^klanten/ は機能しますが、RewriteRule ^werknemer/ は機能しません。

これを修正する方法は?

ありがとう!ウーター0100

4

1 に答える 1

3

2 つの条件を再度複製する必要があります。RewriteCondは直後の にのみ適用されるため、RewriteRule複数のルールに適用する場合は条件を複製する必要があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^werknemer/([^/]+)/?$ werknemer/$1.php [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^klanten/([^/]+)/?$ klanten/$1.php [L,QSA,NC]

最後のルールにも必要かもしれません。

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

php末尾のスラッシュが存在するかどうかを確認し、最後に追加すると既存のファイルが生成されるかどうかを確認する前にそれを削除します。

于 2012-09-24T20:56:46.987 に答える