非WWW到使用htaccess文件的WWW重定向

时间:2011-02-28 02:23:44

标签: .htaccess mod-rewrite redirect

我正在使用Codeigniter-。 我的域名目前不会重定向到www版本。

例如,如果我输入mydomain.com,则会保留mydomain.com。我想将其重定向到www.mydomain.com

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

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

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

RewriteCond $1 !^(index\.php|system|rpc_relay.html|canvas.html|robots\.txt)
RewriteCond $1 !^(sitemap\.xml|export)
RewriteRule ^(.*)$ /index.php/$1 [L]

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

http://重定向到http://www。 ,并删除网址中的路由文件(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

希望这个帮助

答案 1 :(得分:0)

之前我使用过以下内容:

<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>

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我不知道为什么有这么复杂的RewriteRules答案,即使Gobhi提供了一个很好的通用解决方案(无论域名是什么,它都有效)。 这是我的解决方案。

<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>