我正在尝试获取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]
但我似乎无法让他们一起玩得很好!任何建议/建议最受赞赏!
答案 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
“开始”重写。 RewriteCond
和RewriteRule
成对配对。
在这里,我们首先将用户发送到非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]