我正在使用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]
非常感谢任何帮助。
答案 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>