通过.htaccess文件301重定向无法正常工作

时间:2014-05-10 23:57:13

标签: .htaccess codeigniter redirect

我正在使用CodeIgniter。 在httacess文件中,我编写了这段代码来从url中删除index.php:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

现在我想将站点根目录重定向到子域,使用以下代码:

rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ sub.domain.com/$1 [r=301,nc]

domain.com已成功重定向到sub.domain.com。但domain.com/dir到sub.domain.com/dir不起作用,仍然打开domain.com/dir。 当我删除第一个代码时,重定向工作完美,但我也需要删除index.php。

2 个答案:

答案 0 :(得分:0)

$添加到rewritecond %{http_host} ^domain.com [nc]的末尾应该为您解决。

rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ sub.domain.com/$1 [r=301,nc]

会变成

rewritecond %{http_host} ^domain.com$ [nc]
rewriterule ^(.*)$ sub.domain.com/$1 [r=301,nc]

答案 1 :(得分:0)

你的规则如下:

RewriteEngine on

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

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]