为什么我的子域名redirect到我的主域名?

所以基本上,我有一个子域, m.mydomain.com.au虽然每次我访问它,我redirectwww.mydomain.com.au/m

例如,如果我尝试去m.mydomain.com.au/contact.php ,我会自动redirect到www.mydomain.com.au/m/contact.php

我从来没有试图修改我的.htaccess文件,但我相信这是目前造成的问题。

所有的帮助和build议非常感谢。

这是我完整的.htaccess文件:

 Options +FollowSymLinks # Use Mod_deflate to compress static files <ifmodule mod_deflate.c> <filesmatch ".(js|css|ico|txt|htm|html|php)$"> SetOutputFilter DEFLATE </filesmatch> </ifmodule> # Speed up caching FileETag MTime Size # Expires ExpiresActive On ExpiresDefault "access plus 366 days" # Future Expires Headers <filesmatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Expires "Sat, 27 Dec 2014 23:59:59 GMT" </filesmatch> RewriteEngine On RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR] RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule .* index.php [F] RewriteCond %{HTTP_HOST} !^www\.mydomain\.com\.au RewriteRule ^(.*)$ http://www.mydomain.com.au/$1 [R=permanent,L] #RewriteBase / RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_URI} !^/index\.php RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [L] 

假设你的子域和主域都有相同的文档根(因此使用相同的htaccess文件),这是导致重定向的规则:

 RewriteCond %{HTTP_HOST} !^www\.mydomain\.com\.au RewriteRule ^(.*)$ http://www.mydomain.com.au/$1 [R=permanent,L] 

这基本上说,如果域不是 www.mydomain.com.au ,重定向到http://www.mydomain.com.au/

您需要添加一个额外的检查,以便它不重定向您的子域:

 RewriteCond %{HTTP_HOST} !^www\.mydomain\.com\.au$ [NC] RewriteCond %{HTTP_HOST} !^m\.mydomain\.com\.au$ [NC] RewriteRule ^(.*)$ http://www.mydomain.com.au/$1 [R=permanent,L] 

或者只重定向没有www.的域名www.

 RewriteCond %{HTTP_HOST} ^mydomain\.com\.au$ [NC] RewriteRule ^(.*)$ http://www.mydomain.com.au/$1 [R=permanent,L] 

这是这条规则:

 RewriteCond %{HTTP_HOST} !^www\.mydomain\.com\.au RewriteRule ^(.*)$ http://www.mydomain.com.au/$1 [R=permanent,L] 

该规则基本上说,如果HTTP_HOST (即HTTP Host:头,这是用于访问该网站的域名)不是www.mydomain.com.au那么它将发送一个HTTP HTTP 301(“永久重定向”)到www域。

删除这两行,你会得到你想要的 – 但你会失去规范的域名重定向。