問題を発見するまで、私はこの RewriteRule を開発しました。
これがルールです。
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%1/%2/%4.php -f
RewriteRule ^ /%1/%2/%4.php?id=%3 [QSA,L]
URL の形式は次のようになります。 /home/service/ ID /scriptname IDは動的であり、RewriteRule はファイルの存在を確認するときに ID を取得しないことに注意してください。
しかし、この 1 つのシナリオでは、私が使用している ID の 1 つに「%2F」が含まれていることがわかりました。これは、デコードするとスラッシュ (/) に変換されます。別のディレクトリがあります。
私の質問は、%2F が RewriteRule 内でデコードされているのはなぜですか? また、どのように解決策を設計すればよいのでしょうか? -できればクイックハックやIDの変更以外。