2011-12-24 161 views
0

我有一個小的htaccess文件,其中包含一些簡單的規則。
首先,我想重定向或在開始主域的添加WWW重定向不能正常工作

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^(www|serv)\.(.*\-.*)\.com [NC] 
RewriteRule ^(.*) http://www.maindomain.com%{REQUEST_URI} [L,R=301] 

在第二步驟中我想從URI刪除該文件夾SERV
我有以下文件夾結構:

www.maindomain.com

  • SERV/
  • 內容主要網頁的

要做到這一點我有以下規則:

RewriteCond %{HTTP_HOST} ^serv.* [NC] 
RewriteCond %{REQUEST_URI} !^/serv.* [NC] 
RewriteRule ^(.*) /serv/$1 [L,QSA] 

這個工程到目前爲止,但我自己的寫的條件和規則,上述規則的衝突:

RewriteEngine On 
RewriteBase/
RewriteRule ^search/$ search.php [L,QSA] 

所以我的URI得到有時類似的東西www.maindomain.de/search/search

這裏是我的全部htaccess文件:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^(www|serv)\.(.*\-.*)\.com [NC] 
RewriteRule ^(.*) http://www.maindomain.com%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTP_HOST} ^serv.* [NC] 
RewriteCond %{REQUEST_URI} !^/serv.* [NC] 
RewriteRule ^(.*) /serv/$1 [L,QSA] 

RewriteEngine On 
RewriteBase/
RewriteRule ^search/$ search.php [L,QSA] 

有什麼不對?我沒有發現錯誤。

此外,我想知道,如果有可能,如果子域不SERV和URI不包含SERV的子域名會被重定向到WWW

回答

1

,如果有可能,如果子域不SERV和URI不包含SERV的子域名會被重定向到www

對於你的問題的最後一部分,添加下面給你的.htaccess文件

#if the subdomain is not serv 
RewriteCond %{HTTP_HOST} !^serv\.[^\.]+\.de$ [NC] 
#and the uri does not contain serv 
RewriteCond %{REQUEST_URI} !^.*serv.*$ [NC] 
#redirect to www 
RewriteRule .* http://www.maindomain.de%{REQUEST_URI} [NC,L,R=301] 

編輯: 我更換%1點的參考與主機之上,這可以改變,以符合您實際的主機。

對於問題的第一部分,下面的規則將匹配任何不以www開頭的主機。或服務。在域中沒有破折號,即它將匹配www.maindomain.com,因爲它沒有'-`。

RewriteCond %{HTTP_HOST} !^(www|serv)\.(.*\-.*)\.com [NC] 

這將導致您觀察到的無限重定向。

修復它,它更改爲以下

#if host is NOT www.anything.com or serv.anything.com 
RewriteCond %{HTTP_HOST} !^(www|serv)\.[^\.]+\.com$ [NC] 
#redirect to www.maindomain.com 
RewriteRule .* http://www.maindomain.com%{REQUEST_URI} [L,R=301] 
+0

你重寫規則似乎不起作用。參考%1將不會被解析。如果我直接調用maindomain,我得到一個錯誤,那裏有太多的重定向。 – CSchulz 2011-12-25 11:04:35

+0

再次嘗試和www。導致無限循環。從http://wiki.../notTheWikiFolder重定向工程。 – CSchulz 2011-12-25 20:05:48

+0

對不起 - 我有一個拼寫錯誤,忘記逃離''[^ \。]' - 這是固定的 – 2011-12-27 01:28:51