mod_rewriteを使用して、次のようにURLを書き換えています。
http://example.com/1,2,3,4/foo/
.htaccessでこれを行うことにより:
RewriteEngine On
RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA]
「1,2,3,4」が255文字より長い文字列に変わる場合を除き、Apacheは「403 Forbidden」を返します。
foo.php?id=1,2,3,4
非常に長いid文字列であっても、直接アクセスするのに問題はありませんが、これは私にとって選択肢ではありません。
調整すべきApacheやその他の設定はありますか?
更新:RewriteLogLevel 9でRewriteLogをオンにしました。短いID文字列では、ログファイルに複数の行が記録されます。しかし、id文字列が255文字を超える場合、何もログに記録されません(mod_rewriteが実行されていないようです?)。
この質問がおもしろい/役に立つと思ったら、賛成してください。
RewriteLog
、RewriteLogLevel
何が一致し、実際にどのように書き換えられているかを確認できます。私はそれだけで255文字にコピーされている推測$1
し、両端がアップされていることをid
Apacheが403を返すように、クライアントは、参照を許可されていないことを、私はコードを見ていないが、それはそれはApacheが操作することができ固定256バイトバッファ内の後方参照(256番目は終端NULL用に予約されています)。