使用codeigniter和htaccess删除index.php和301重定向

时间:2013-09-13 01:54:00

标签: php apache .htaccess codeigniter mod-rewrite

我有5个域都指向同一个服务器,为了SEO目的,我设置了一个规范主域名的规范元链接。

我的问题是,如何从网址中删除index.php,并将301我的所有域名重定向到主域名?

这是我的.htaccess删除index.php

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|robots\.txt|sitemap\.xml)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

ErrorDocument 404 /index.php

这是我的.htaccess到301重定向

RewriteEngine On
RewriteBase /

RewriteCond %{SERVER_NAME} !^www.example.com$
RewriteRule .* http://www.example.com%{REQUEST_URI} [R=301,L]

我试图将两者合并,但后来我得到了一些奇怪的结果,它会重定向域名,但将整个网址作为页面的参数...

1 个答案:

答案 0 :(得分:3)

您需要在路由规则(将所有内容发送到/index.php之前)进行重定向:

RewriteEngine On

RewriteCond %{SERVER_NAME} !^www.example.com$
RewriteRule .* http://www.example.com%{REQUEST_URI} [R=301,L]

RewriteCond $1 !^(index\.php|robots\.txt|sitemap\.xml)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

ErrorDocument 404 /index.php
DirectoryIndex index.php