Neredeyse doğru yapıyorsun. Sadece hafif bir hata urlencode
sorgu parametreleri ve yol değil parçası sadece uygun olan bir alan, belirtmek için bir artı kullanmayı tercih olacaktır. rawurlencode
burada daha iyi olurdu.
Ancak, bu işe yaramazsa nedeni değildir. Zaten doğru olan, /controller/action/par1/%2F
yolunu üreten.
Apache dizin geçişi sorunları (oldukça etkisiz bir şekilde) sizi korumaya çalışıyor çünkü sizin için pratikte çalışmıyor. Eğer bir URL yolu bir %2F
dizisini eklerseniz, Apache ve varsayılan atlama tarafından kendi 404 sayfa (herhangi bir ErrorDocument ayarları sayarak) gösterecektir. Bu özelliği açmak için (IMO: misfeature) kapalı, sen AllowEncodedSlashes yapılandırma yönergesini kullanabilirsiniz.
O geri komut geldiğinde aslında kodlanmış bölü alabilirsiniz olsun solucanlar başka tenekesi. Nedeniyle orijinal CGI spec PATH_INFO
değişkeni kötü tasarım, birçok ortamlarda bir şifresiz farklı şey olarak %2F
görmek mümkün olmayacaktır {[(2) }], potansiyel olarak yol parçaları yapıyoruz yönlendirme kırıyor.
Bu Apache onlar tarafından karıştı alacak yalnızca sunucu veya dil olmadığı için, yol kesimlerinde eğik önlemek için en iyi genellikle. Genel olarak size yol parçalar (a) /
, (b) {[birçok sunucularında pratik sorunları var çünkü, bayt veya herhangi bir karakter dizesini kabul etmek gerekiyor giriş için sorgu parametreleri kullanmak gerekir (1)]}, (c) boş karakter ve (d) boş dizeler.