基本上,我有一个子域m.mydomain.com.au
,但每次访问它时,我都会被重定向到www.mydomain.com.au/m
。
例如,如果我尝试转到m.mydomain.com.au/contact.php
,我会自动重定向到www.mydomain.com.au/m/contact.php
我以前从未尝试过修改我的.htaccess
文件,但我相信它现在会导致问题。
非常感谢所有帮助和建议。
这是我的完整.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]
答案 0 :(得分:3)
假设您的子域和主域都具有相同的文档根(因此使用相同的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.
的情况下重定向域名
RewriteCond %{HTTP_HOST} ^mydomain\.com\.au$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com.au/$1 [R=permanent,L]
答案 1 :(得分:1)
这是这条规则:
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
域。
删除这两行,你会得到你想要的 - 但你将失去规范的域名重定向。