我有一个使用PHP框架(CodeIgniter(的网站,我正在尝试将所有发送到"mydomain.com">的查询重定向到www.mydomain.com"。我对 .htaccess 进行了更改,现在如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
# I just added this part
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# The default rule of the framework
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
现在的问题是,当我输入"mydomain.com">时它工作正常,用户被正确重定向,但是当他们输入更复杂的地址(如"mydomain.com/Settings"(时,他们也会被重定向到此主页。
我该如何解决这个问题?
谢谢
这对我有用(example.com(
<IfModule mod_rewrite.c>
RewriteEngine On
# I just added this part
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
# The default rule of the framework
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
对我来说,其中的"框架"部分可能因服务器而异,根据我自己的经验,我有以下选择:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# NORMAL SERVER ( COMMENT OUT IF GODADDY OR OPTION #3 )
RewriteRule .* index.php/$0 [PT,L]
# SPECIAL GODADDY LINE ( UNCOMMENT IF GODADDY )
#RewriteRule ^(.*)$ /index.php?/$1 [L]
# IF NOTHING ELSE WORKS UNCOMMENT THIS ONE
#RewriteRule ^ index.php [QSA,L]
我知道你不是在问"框架"部分,但我想我还是会提到它。
试一试。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
在重写引擎打开后添加此内容
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]