.htaccess 使用htaccess文件进行非WWW到WWW重定向

.htaccess 使用htaccess文件进行非WWW到WWW重定向,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,我正在使用Codeigniter-。 我的域当前未重定向到wwwversion 例如,如果我键入mydomain.com,它将保持mydomain.com。我想将其重定向到www.mydomain.com 如果有人键入mydomain.com/controller/method,那么它应该是www.mydomain.com/controller/method 另一个问题:我已经尝试了其他解决方案,但问题是当它重定向到wwwversion时,它会自动在URL中添加“index.php”。但是,当我

我正在使用Codeigniter-。 我的域当前未重定向到
www
version

例如,如果我键入
mydomain.com
,它将保持
mydomain.com
。我想将其重定向到
www.mydomain.com

如果有人键入
mydomain.com/controller/method
,那么它应该是
www.mydomain.com/controller/method

另一个问题:我已经尝试了其他解决方案,但问题是当它重定向到
www
version时,它会自动在URL中添加“
index.php
”。但是,当我在域名中键入
www
时,它工作正常,URL中没有“
index.php
”。此问题仅在重定向期间发生

这是我的
.htaccess
文件(我已删除重定向代码)


任何帮助都将不胜感激。

我以前使用过以下方法:

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
  RewriteCond %{HTTP_HOST} (.+)$ [NC]
  RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
</IfModule>

重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\..+$[NC]
重写cond%{HTTP_HOST}(+)$[NC]
重写规则^(.*)$http://www.%1/$1[R=301,L]

要将
domain.com
重定向到
www.domain.com
,可以使用以下重写规则。请用您自己的域名替换
domain.com

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

http://
重定向到
http://www
,并删除url中的路由文件(
index.php
),将以下行放在htaccess上:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond $1 !^(index\.php|images|css|js|styles|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
域名是:

domain.com
可直接访问的文件夹:

images|css|js|styles

我不知道为什么会有这么复杂的答案,尽管Gobi提供了一个很好的通用解决方案(=无论域名是什么,它都能工作)。 这是我的解决办法

<IfModule mod_rewrite.c>
  RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
  RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

  RewriteRule (.*)/index\.php$ $1/ [QSA]
</IfModule>

RewriteCond%{HTTP_HOST}^mydomain\.com$[NC]
重写规则^(.*)$http://www.mydomain.com/$1[R=301,L]
重写规则(.*)/index\.php$$1/[QSA]

重定向非常有效,但问题是它在域中添加了“index.php”。当我键入“mydomain.com”时,它会将我带到“www.mydomain.com/index.php”。实际上我想去掉“index.php”。在我的配置文件中,我们已经将其设置为$config['index_page']=“”;现在工作很好。实际上,我把它放在了错误的一行,这就是为什么“index.php”再次出现的原因。谢谢@图欣请说明你是如何解决这个问题的。这对很多人都会有帮助。谢谢,但是当我输入“mydomain.com”时会遇到同样的问题,这会导致我进入“www.mydomain.com/index.php”。实际上我想去掉“index.php”。在我的配置文件中,我们已经将其设置为$config['index_page']=“”;请提供完整的
.htaccess
文件,这样您就可以得到完整的
.htaccess
文件答案,您只需复制/粘贴
;)嗨。。我在使用这个时遇到了一些问题。。当我把子域URL而不是www放在主域上时,我在主域上重定向。例如:当我使用时,它在主域上重定向。为什么会这样?你知道吗?请帮助我。@Sandeptawaniya,如果我错了,请纠正我,但在我解释上述代码时,只有在访问域时没有www,它才能添加www。也就是说,其他子域将无法使用上述.htaccess规则。
<IfModule mod_rewrite.c>
  RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
  RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

  RewriteRule (.*)/index\.php$ $1/ [QSA]
</IfModule>