我的.htaccess中有几条重写规则似乎有冲突。
我正在运行一个ExpressionEngine(CodeIgniter)网站,该网站使用index.php文件解析所有URI。我出于审美原因从URI中删除了index.php。
我想要实现的目标:
我现在拥有的:
{{1}}
什么有效:
什么行不通:
如何更新条件和规则,以便实现没有尾部斜杠的干净链接,也没有index.php,无论它是哪个页面。
答案 0 :(得分:1)
有这样的话:
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_ADDR} !=127.0.0.1
RewriteCond %{SERVER_ADDR} !=::1
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule ^(.*?)index\.php(/.*)?$ /$1$2 [R=301,NE,L]
RewriteCond $1 !^(images|system|themes|index\.php|admin\.php|favicon\.ico|robots\.txt|humans\.txt|crossdomain\.xml) [NC]
RewriteRule ^(.*)$ index.php/$1 [L]
在测试前清除浏览器缓存。