2010-06-30 3 views
1

Мне любопытно, есть ли более эффективный способ сделать следующее? Сейчас это прекрасно работает, просто кажется излишним ...Rewrite Logic, есть ли лучший способ сделать это?

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] 

С уважением, Andrew

ответ

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

Это сработало отлично! Спасибо! –

Смежные вопросы