Codeigniter htaccess删除index.php和www

时间:2012-08-20 00:12:58

标签: php apache .htaccess codeigniter mod-rewrite

我正在尝试获取htaccess重写规则以从网址中删除index.php并将www.请求重定向到非www版本。

这是我的htaccess,可以正常删除index.php:

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

我遇到了另一个关于如何删除www部分的问题:

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

但我似乎无法让他们一起玩得很好!任何建议/建议最受赞赏!

2 个答案:

答案 0 :(得分:6)

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

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

RewriteEngine On“开始”重写。 RewriteCondRewriteRule成对配对。 在这里,我们首先将用户发送到非www版本,并清理URL。

答案 1 :(得分:2)

首先需要确保首先出现“非www”重写规则,然后确保将所有请求重定向到CodeIgniter引导程序文件。请注意,以下代码仅承认HTTP重写。如果您还需要HTTPS,则需要进行一些修改。

RewriteEngine on
# Sending all www requests to the non-www version.
RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

# Now the CodeIgniter part
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]