次のことを行う mod_rewrite のルールを作成しようとしています: URL:/xml/regularString
リダイレクト先/xml/script.php?code=regularString
これは、次のような単純なルールで非常にうまく機能します。
RewriteRule ^xml/([A-Za-z0-9-]+)/?$ xml/script.php?code=$1 [NC]
(補足:なぜ?
重要なのですか?オプションのリダイレクト/一致は必要ありませんが、削除すると機能しません)
とにかく...非常に珍しい特殊文字でも同じ方法でリダイレクトする必要がありますが、ルールを拡張しようとすると、= 404に一致しないか、PHPスクリプトができないように混乱します次のような理由でアクセスすることさえできます(エラーログ):
404など.../xml/]*\xc2\xb0_\xc2\xb0*[
そしてルール
RewriteRule ^/xml/([A-Za-z0-9-*°><_]+/?$
...など; それらをエスケープして、またはエスケープせずに(経由で)
(これは次のようになるはずでした:URL /xml/>*°_°*<
リダイレクト先/xml/script.php?code= > *°_°*<
(またはPHPでデコードして同じ結果を得ることができる他のエンコーディング)
mod_rewrite が常に php スクリプトを見つけてコードをリダイレクトするようにするにはどうすればよいですか? 私はPHPでそれを元に戻す方法を理解できますが、それらのRewriteRulesでは理解できません. [B]
ドキュメントで mod_rewrite のエスケープ動作を変更するために使用されていたorなどのフラグを試し[NE]
ましたが、前述のエラー ログ エントリで 404 よりも良くなりませんでした。