2009-03-20 22 views
6

Yani yapmaya çalıştığım şey. Basit bir çerçeveye sahibim ve URL'leri yeniden yazmak için mod yeniden yazımı kullanıyorum, böylece doğru dosyaları işaret ettiler. Web klasörü içinde yer alan bir süreç klasörüm var (web klasörü resimler, css, vb. Gibi tüm gerçek web sitelerinin olduğu yerdir)..htaccess yönlendirme

Bu harika çalışıyor ancak şu an yapmaya çalıştığım şey formları işlemek için bir default.php dosyasına sahip olmak. Dosya, formunu işaret ettiğinde harika çalışıyor ancak formu uygun dosyaya yönlendirmek istiyorum ve eğer dosya yoksa o zaman default.php

kullanır. Formlar bir sınıf tarafından oluşturulur ve işlem işlem/{FORMUNUN KİMLİĞİ} .php'ye ayarlanmıştır. Fikir, herkesin bir formu sınıf kullanarak oluşturabileceği ve özel bir şey yapmaları gerekmediği takdirde, default.php dosyası işlenecektir. form.

Her zaman default.php dosyasını kullanmak için form sınıfını ayarlayabilirim ve sonra default.php dosyasında uygun dosyanın çıkıp çıkmadığını kontrol edebilirim.

RewriteRule ^process/([^/]*) /web/process/$1 
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-f 
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-d 
RewriteRule ^process/([^/]*) /web/process/default.php [L] 
+0

(http://stackoverflow.com/questions/470880/rewriterule-checking-file-in-rewriten-file-path-exists/471994#471994) çok benzer bir [soru] (http) :) //stackoverflow.com/questions/470880/rewriterule-checking-file-in-rewriten-file-path-exists. –

cevap

2

Genellikle sizin RewriteCond'ın aramaları olmalıdır: Eğer varsa, o zaman form işlenirken tutmazsa, o zaman, bu dosyayı kullanmak ama hala böyle bir şey yeniden mod üzerinde çalışacak olmadığını bilmek merak ediyorum RewriteRule'ınızdan önce. Kural, Şartların yerine getirilip getirilmediğini tetikler.

+0

Evet, ancak nasıl işlem/dosya ismini web/process/filename için yeniden yazabilirim ve web/process/filename mevcut değilse, web/process/default öğesine giderse? –

+0

Her iki durum da sizin için çalışıyor mu? Varsayılan durum için mantığınızın doğru olduğunu, ancak ilk Kuralın her seferinde bağımsız olarak yürütülebileceğini göz önünde bulundurun. –

14

yalnız Bu kural bunu yapmalıdır:

istenen yolun varolan dosyaya eşlenen edilemiyorsa
RewriteCond %{DOCUMENT_ROOT}web/$0 !-f 
RewriteRule ^process/[^/]+$ web/process/default.php [L] 

, varsayılan dosyaya yeniden yazılmalıdır.

+2

+1 Çalışması gerektiği gibi görünüyor ve temiz ve kompakt. –