这是我的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”
我该如何解决?
答案 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]