Htaccess ve php ile sahte subdizinleri oluşturun VE olarak mevcut dizinleri tutmak

2 Cevap php

I have a website, which has numerous subdirectories already. (All existing in server's filesystem) I want to create new "virtual" sub-dirs with htaccess, but I only want the htaccess rule work for directories, listed in DB, and not existing in filesystem.

i.e. File system has: /dir1/ & /dir2/

MySQL veritabanı 'Dir3' & için kaydı var 'Dir4'

Ve ben istiyorum:

A: mysite.com/dir1 / ve mysite.com/dir2 / ekran mevcut eski içerik

B: mysite.com/dir3/ and mysite.com/dir4/ display content from MySQL provided by PHP sctipt via redirect like: mysite.com/myscript.php?dir=dir3

C: mysite.com/dir5 / ekran 404 hatası (Dir DB ne de Veritabanında yok)

Basically I want .htaccess to work like this: IF DIR Exists in DB - apply the rewrite rule and show content from myscript.php?dir=DIR

BAŞKA herhangi bir kuralı geçerli değildir.

Ben dir adı verilen DB veya değil var, ama nasıl mod_rewrite bu komut verileri almak yapabilirim zaman 0/1 dönebilirsiniz ayrı bir php komut dosyası oluşturabilir?

O tüm htaccess / PHP ile mümkün mü?

2 Cevap

Option 1: Aşağıdaki htaccess Üyeler:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ _redirect.php/$1 [L]

Php script fiziksel olarak var olmayan tüm dirs ve dosyaları yönlendirme hangi. Bu komut dosyası içinde elle istenen url ayrıştırmak ve sonraki ne mysql tablosunu kontrol edebilirsiniz - ileri veya 404 dönün.

Option 2: klasörler ile tablo genellikle değişmez ve / veya hızı gerekir, tablo değişti sonra php sizin htaccess dosyası oluşturmak ve orada db tüm sanal klasörler eşlerseniz.

Sen afaik. Htaccess böyle bir kontrol yapamamaktadır. Ben. Htaccess içine eski içerik klasörleri kodlamalısınız ve dinlenme yeniden yazmak için bir desen kullanmak için çalışacağını söyledi.