我已經有兩個重寫規則現在可以正常工作,但還需要添加更多的代碼才能完美工作。mod_rewrite如果文件存在
我有一個網站在mydomain.com上託管,所有subdom.mydomain.com都重新編譯爲mydomain.com/subs/subdom。我的CMS有如果被達成的文件不存在處理請求,重寫可以這樣判定:
RewriteCond $1 !^subs/
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ subs/%1/index.php?page=$1 [L]
我CMS處理解析像往常一樣的一個部分。問題是,如果一個文件確實存在,我需要鏈接到它不經過我的CMS,我設法做到這一點是這樣的:
RewriteCond $1 !^subs/
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ subs/%1/$1 [L]
到目前爲止,似乎像一個魅力的工作。現在我很挑剔,我需要有存儲在subs/default /中的默認文件。如果文件存在於子域文件夾中,我們應該抓住這個文件夾,但如果沒有,我們需要從默認子域中獲取文件。如果文件不存在,我們應該使用當前子域的404頁面,除非沒有。
我希望它描述得很好。感謝您的時間!