2009-03-09 42 views
3

Zend Framework uygulamam ile garip davranışlar yaşıyorum.Zend Framework: garip URL yeniden yazma davranışı

Bu URL'yi çalıştırıyorum, dizin denetleyicisini 1234567890 eylemini çalıştırmayı umuyordum.

Message: Invalid controller specified (4567890) 

Ve sayfadaki olan garip tüm URL'ler artık bağlantısı olan:

http://hello.com/index/1234567890?test=http%3A%2F%2Fworld.com%2Findex.php 

Ben ancak böyle istisna olsun

http://hello.com/index.php/index/1234567890 

yerine:

http://hello.com/index/1234567890 

Dizin.php dizesinin th olduğuna dikkat edin URL'lere yanlış şekilde enjekte edilir 9 karakter, yanlış denetleyici adını almak için dizin/123 4567890 dize kesilir aynı sayıdır.

Başka bir şey, enjekte edilen index.php dosyasının, örnekteki URL kodlanmış get parametresindeki index.php ile ilişkili olmasıdır.

Sorun nedir? Zend'de bir böcek mi? Yoksa yanlış bir şey mi yapıyorum?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /index.php [NC,L] 
+0

Mod_rewrite'in günlüğe kaydetme işlevini enalbe etmeye çalışın (bkz. RewriteLogLebel yönergesi). – Gumbo

cevap

0

MultiViews bu davranışa neden olabilir:

Bu

benim .htaccess olduğunu. Devre dışı bırakmak için deneyin:

Options -MultiViews 
+0

Proje takma adımımda Seçenekler Tümü Tümü Tümü - MULTİ Görünümler olarak ifade ettim, ancak ne anlama geldiğini bilmiyordum. Bence zaten etkin olmadılar. –

+0

Bu gösterime izin verilip verilmediğini tam olarak bilmiyorum. Bu yüzden onları iki deklarasyona bölmeyi deneyin. – Gumbo

+0

İç işlemeyi görmek için RewriteLogLevel'i denediniz mi? – Gumbo

3

Sen bu yüzden ben kendi localhost dolaştım ve url bir vuruş verdi hata ayıklama denedim yolunda çok koymadı.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php 

Ve ikisi de aynı şeyi yaptıklarını

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /index.php [NC,L] 

: Düşük ve mayın aynı şeyi yapar beğenirsin, iki farklı ModRewrite yöntemleri denedik. Oldukça az zaman harcayarak ve istek parametrelerinin hata sayfamda nasıl göründüğüne baktıktan sonra, Zend Framework'deki varsayılan yönlendirme kalıplarında büyük bir aksaklık var ya da kullanımı hakkında bir şeyler kazandığınız bir şey var. modrewrite dosya adınız URL'de istek gönderiyor.

Ana dizini.php dosyasını main.php ve sırasıyla modrewrite olarak değiştirdim ve gayet iyi çalışıyor, çifte main.php'nin hata yapmasına neden olmadığından emin olun.

Bu yüzden bir şey vaat etmiyorken, index.php'inizi (bootstrap'inize yazılır ve bootstrap'inizi de içerir) main.php'ye yeniden adlandırırsanız veya moderinizi yansıtırsanız ve bunu yansıttığınız takdirde, tüm sette olmanız gerekir!

İyi şanslar!