0
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

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

http://www.example.com/test%testにアクセスしようとすると、この htaccess はエラー 400 を返します。

test.php:

echo $_SERVER['QUERY_STRING'];

結果:

f=error/400.html

htaccess の % 記号をエスケープするにはどうすればよいですか? 同じ問題を引き起こす可能性のある他の文字はありますか?

4

1 に答える 1

0

Bmod_rewrite で % をエスケープするには、フラグを使用できます。英数字以外の文字をエスケープするために使用されます。それがうまくいくかどうか教えてください。

例えば

RewriteRule (?!^infos/)^(.+?)/?$ /test.php?f=$1 [B,L,QSA,NC]
于 2013-07-04T22:17:04.633 に答える