3

我试图让我的 htaccess 重写规则index.php从 url中删除,并将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]

但我似乎无法让他们一起玩得很好!非常感谢任何建议/建议!

4

2 回答 2

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。

于 2012-08-20T00:18:53.747 回答
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]
于 2012-08-20T00:23:12.353 回答