Bunun gibi URL'leri yeniden yazmak için mod_rewrite kullanıyorum:
http://example.com/1,2,3,4/foo/
Bunu .htaccess içinde yaparak:
RewriteEngine On
RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA]
"1,2,3,4" 255 karakterden daha uzun bir dizgeye dönüşmesi dışında Apache "403 Yasak" değerini döndürür.
foo.php?id=1,2,3,4
Çok uzun bir kimlik dizesiyle bile doğrudan ziyaret etmekte sorun yok , ancak bu benim için bir seçenek değil.
Ayarlamam gereken bazı Apache veya başka bir ayar var mı?
GÜNCELLEME : RewriteLogLevel 9 ile RewriteLog'u açtım. Kısa bir kimlik dizesiyle günlük dosyamda birkaç satır alıyorum. Ancak id dizesi 255 karakterden büyük olduğunda, hiçbir şey günlüğe kaydedilmez (mod_rewrite bile yürütülmüyor gibi görünüyor mu?).
Bu soruyu ilginç / yararlı buluyorsanız lütfen oy verin.
RewriteLog
ve RewriteLogLevel
böylece eşleşti ediliyor ve gerçekten nasıl yeniden ediliyor ne görebilirsiniz. Ben sadece 255 karakter kopyalanıyor $1
ve id
müşteri görmek için yetkili olmadığı bir sonuç, yani Apache 403 döndürür tahmin ediyorum. Ben koda bakmadım, ama Apache manipüle olabilir 256 baytlık sabit bir arabellekteki geri başvuru (256. sonlandırma NULL için ayrılmıştır).