HT Erişim - Mod Rewrite

2 Cevap php

I kullanıyorsanız:

RewriteEngine On
RewriteRule ^.* controller.php

It would send all requests to controller.php But if controller.php included a css file (/assets/css/main.css) then it wouldn't work, as when the browser called it, it would just redirect to controller.php

Bunu düzeltmek için bir yolu var mı?

2 Cevap

Sen condition aslında varolan dosyaları eşlenebilir URL'leri dışlayarak bir ekleyebilirsiniz:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* controller.php

Mutlak yol %{REQUEST_FILENAME} dosya sistemi ve !-f sadece tersidir varolan düzenli dosya yolu ise -f anahtar kelime test edecek.

Eğer dışlamak istediğiniz dizinleri sabit bir liste varsa Ancak, aynı zamanda bu yapabilirdi:

RewriteCond $0 !^(assets|foo|bar)/
RewriteRule ^.* controller.php

Bu durum, bütün testler RewriteRule desenin maç (referans ile $0) de assets/ ne foo/ ile başlar ne de eğer { [(4)]}. Eğer maç işlemek istemiyorsanız siz de RewriteRule yönergesinde bir reddedildiği ifade kullanabilirsiniz:

RewriteRule !^(assets|foo|bar)/ controller.php

Bu deneyin:

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ^.* controller.php

denenmemiş ama çalışması gerekir.