htaccess非www重定向错误

时间:2012-02-13 19:03:18

标签: apache .htaccess

这是我的htaccess代码,

Options +FollowSymLinks 

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^mysite\.com [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L] 

RewriteEngine On 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^([a-zA-Z0-9]*)$ /profile.php?user=$1 [L,QSA]

当我输入“http://mysite.com/username”时,它可以正常工作

但是当我输入“http://www.mysite.com/username”时 它重定向到“http://mysite.com/profile.php?user=username”

我该如何解决?

3 个答案:

答案 0 :(得分:0)

根据评论,这将删除“www”,我认为这部分是你想要的。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]

我觉得这与GET变量有关吗?

答案 1 :(得分:0)

这种情况正在发生,因为.htaccess(DocumentRoot)中的/会再次被读取。

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

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

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9]+)$ /profile.php?user=$1 [L,QSA] 

另外, 无需添加

RewriteEngine On 
RewriteBase /
不止一次。删除第二个条目。

答案 2 :(得分:0)

以下是适合您的代码:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^([a-z0-9]*)$ profile.php?user=$1 [L,QSA,NC]