5
我試圖讓我的周圍的RewriteCond頭,要重寫無論是靜態的html頁面的任何請求(如果存在的話),或特定的index.php(模擬2級只要請求的文件不存在)。的if-else使用的RewriteCond
爲了說明邏輯:
if HTTP_HOST is '(www\.)?mydomain.com'
if file exists: "/default/static/{REQUEST_URI}.html", then
rewrite .* to /default/static/{REQUEST_URI}.html
else if file exists: {REQUEST_FILENAME}, then
do not rewrite
else
rewrite .* to /default/index.php
我似乎沒有什麼太大的麻煩做這件事的時候我並不需要測試的HTTP_HOST。最終,這個.htaccess文件將處理多個域的請求。
我知道我可以解決這個問題有虛擬主機,但我想弄清楚如何做這種方式。
我不是太熟悉的一些其他標誌的,將其中的任何是利用這裏(如鏈| C,接下來| N或跳過| S)?
在此先感謝!
更新:我已經成功地做到這一點,但希望選擇:
RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..* [NC]
RewriteCond %{DOCUMENT_ROOT}/%1/static/%{REQUEST_URI}.html -f
RewriteRule (.*)? /%1/static/$1.html [NC,L]
RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..* [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /%1/index.php [L,QSA]
更新#2:從甘博的回答幫助,想出了另一個。我喜歡這將需要更少的維護在添加域的情況下。 (感謝濃湯!)
是否有爲什麼我不應該設置ENV變量的任何原因?
RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..*$ [NC]
RewriteRule^- [E=APP:%1]
RewriteCond %{DOCUMENT_ROOT}/%{ENV:APP}/static/%{REQUEST_URI}.html -f
RewriteRule (.*)? /%{ENV:APP}/static/$1.html [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /%{ENV:APP}/index.php [L,QSA]
謝謝!當我意識到這一點時,我不知道不重寫規則的語法。 這給了我另一種解決方案是原來是正是我想要的想法(更新原來的職位)。再次感謝! – 2010-05-14 20:38:23