2011-04-12 171 views
0

我有子域名:sub1.tld.com,sub2.tld.com等等。這個子域名包含重要信息。但我想阻止打開任何其他網址,例如:sub1.tld.com/anypagesub2.tld.com/dir/more/anyurl.html。此網址必須重定向到主域tld.com:tld.com/anypagetld.com/dir/more/anyurl.html.htaccess從子域名文章重定向到主域名

所以,我必須重新定向之前檢查兩件事情:

  1. 它的任何子域
  2. 它不是子域的根頁面

我創造了這個規則:

RewriteCond %{HTTP_HOST} ^.+\.tld\.com [NC] 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteRule ^(.*)  http://tld.com/$1 [R=301,L] 

這一套規則按預期工作(重定向sub1.tld.com/anypagetld.com/anypage),而且還重定向sub1.tld.com到tld.com。錯誤在哪裏?第二個字符串錯了?

回答

2

對於一些未知的原因,最可靠的檢查變量是%{THE_REQUEST},不%{REQUEST_URI}。

%{} THE_REQUEST包含原始瀏覽器的查詢,Web服務器,例如:GET /anypage.html HTTP/1.1,如果您正在打開網址http://anysite.com/anypage.html

所以,你在這裏的.htaccess完整的工作規則集:

RewriteCond %{HTTP_HOST} ^.+\.tld\.com$ 
RewriteCond %{THE_REQUEST} ^get\ /(.+)\ http.* [NC] 
RewriteRule ^(.+)   http://tld.com/$1 [R=301,L] 
2

試試這個:

RewriteCond %{HTTP_HOST} ^.+\.tld\.com$ [NC] 
RewriteRule ^/(.+)$   http://tld.com/$1 [R=301,L] 

或者您可以使用此字符串來檢查它是否根:

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /\ HTTP/ 
+0

沒有運氣..重定向長,短網址:( – 2011-04-13 23:20:04