2010-06-30 70 views
1

我很好奇,有沒有更有效的方法來做到以下幾點?現在,它的偉大工程,只是似乎有點小題大做......重寫邏輯,有沒有更好的方法來做到這一點?

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{HTTP_HOST} !^www\.clientcollabhq\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.clientcollabhq\.com$ [NC] 
RewriteRule ^(.+)$ /index.php?subdomain=%2&kohana_uri=$1 [PT,L,QSA] 

RewriteCond %{REQUEST_FILENAME} !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [PT,L,QSA] 

問候, 安德魯

回答

2

您可以使用常見的情況在倒置形式條件中斷/跳過規則:

# stop processing if one of these conditions are fulfilled 
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$ [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule^- [L] 

RewriteCond %{HTTP_HOST} !^www\.clientcollabhq\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.clientcollabhq\.com$ [NC] 
RewriteRule ^(.+)$ /index.php?subdomain=%2&kohana_uri=$1 [PT,L,QSA] 

RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [PT,L,QSA] 

現在,每個匹配這些條件之一的請求將使該規則適用,從而結束重寫過程。

+0

這工作完美!謝謝! – 2010-07-08 18:49:49

相關問題