3

所以基本上,我有一个子域,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]
4

2 回答 2

4

假设您的子域和主域具有相同的文档根目录(因此使用相同的 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]
于 2013-09-18T00:57:47.940 回答
1

这是这里的规则:

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

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

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

于 2013-09-18T00:57:28.097 回答