开发者

.htaccess redirect from subdomain's articles to main domain

I have subdomains: sub1.tld.com, sub2.tld.com and so on. This subdomains contain important info. But I want to prevent opening any other urls, for example: sub1.tld.com/anypage or sub2.tld.com/dir/more/anyurl.html. This urls must be redirected to main domain tld.com: tld.com/anypage or tld.com/dir/more/anyurl.html

So, i have to check 2 things before redirection:

  1. it's any subdomain
  2. it's not subdomain's root page

I created this rules:

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

This set of开发者_运维知识库 rules works as expected (redirects sub1.tld.com/anypage to tld.com/anypage) but also redirects sub1.tld.com to tld.com. Where is the error? 2nd string is wrong?


Try this:

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

Or you can use this string to check if it root:

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


For some unknown reason the most reliable for checking variable was %{THE_REQUEST}, not %{REQUEST_URI}.

%{THE_REQUEST} contains raw browser's query to web-server: for example, GET /anypage.html HTTP/1.1, if you are opening url http://anysite.com/anypage.html.

So, here you are complete working rule-set for .htaccess:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜