Php 更新.htaccess以重定向到;www";

Php 更新.htaccess以重定向到;www";,php,apache,.htaccess,codeigniter,redirect,Php,Apache,.htaccess,Codeigniter,Redirect,我有一个使用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://

我有一个使用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>

重新启动发动机
#我刚刚加了这个部分
重写COND%{HTTP_HOST}!^www\[NC]
重写规则^(.*)$http://www.%{HTTP_HOST}/$1[R=301,L]
#框架的默认规则
重写cond%{REQUEST_FILENAME}!-f
重写规则^index.php[QSA,L]
现在的问题是,当我输入“mydomain.com”时,它工作正常,用户被正确重定向,但当他们输入更复杂的地址,如“mydomain.com/Settings”时,他们也被重定向到此主页

我如何解决这个问题

谢谢

试一试

RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
这对我很有用(example.com)


我知道您没有询问“框架”部分,但我想我还是要提到它。

在重新编写引擎后添加此内容

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 

不走运。我得到了相同的结果。重定向是在第一个跃点发生的还是两个重定向?您可以在浏览器中使用类似或“网络”选项卡来查看重定向是否完成。我之所以问这个问题,是因为您的规则看起来很好,并且可能是来自框架的事实之后的第二个重定向。检查。有没有问题在config.php文件中将base_url()更改为www.mydomain.com。
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]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]