2

問題を発見するまで、私はこの 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の変更以外。

4

1 に答える 1

1

I think you need to add the B flag in the rewrite rule, like this:

RewriteRule ^ /%1/%2/%4.php?id=%3 [QSA,L,B]

Check this link for more information.

于 2013-03-19T11:39:41.510 に答える