Apache-2.2
Apache2 虛擬主機重定向,特殊路徑除外
假設我們有 2 個域。
www.my-domain.com www.mydomain.com
作為標準,我們通過重定向從.mydomain.com /到.my-domain.com/
(mydomain.conf) <Virtualhost *:80> ServerName mydomain.com ServerAlias mydomain.com *.mydomain.com RewriteEngine on RewriteCond %{HTTP_HOST} (.+\.)?mydomain\.com(\/.+)?$ [NC] RewriteRule (.*) http://%1my-domain.com$2$1 [R=301] </VirtualHost>
但是現在,由於向後兼容,我們有一個特殊的 URL “www.mydomain.com/special/task.php”,需要直接提供,不應該重定向。
我想要做的是這樣的事情:
(mydomain.conf) <Virtualhost *:80> ServerName mydomain.com ServerPath /special/ DocumentRoot /var/www/special/ </VirtualHost> <Virtualhost *:80> ServerName mydomain.com ServerAlias mydomain.com *.mydomain.com RewriteEngine on RewriteCond %{HTTP_HOST} (.+\.)?mydomain\.com(\/.+)?$ [NC] RewriteRule (.*) http://%1my-domain.com$2$1 [R=301] </VirtualHost>
但這行不通。我做錯了什麼或者這甚至可能嗎?我有什麼不同的做法?
您應該
RewriteCond
在現有的後面添加另一個以實現此異常。像這樣:
RewriteCond %{REQUEST_URI} !=/special/task.php [NC]
請注意,預設情況下,所有
RewiteCond
s 都用邏輯 AND 連接。所以RewriteRule
只有當所有RewriteCond
s 評估為真時才會觸發。