我在.htaccess中使用这些规则和条件来转换这些
http://www.example.com/index.php/about/history
http://www.example.com/about/history/index.php
到
http://www.example.com/about/history
的.htaccess
# ensure there is no /index.php in the address bar
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/
RewriteRule ^(.*)index\.php$ $1 [R=301,L,NS]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php(.*)\ HTTP/ [NC]
RewriteRule ^index\.php/(.*) $1 [NS,NC,L,R=301]
除非存在URL为
的情况http://www.example.com/about/index.php/history/
这将导致无限循环的重定向。现在我知道这可能很罕见,但我希望如果可能的话不会发生。我怎样才能改变我的规则来容纳这个?
答案 0 :(得分:2)
如果我理解正确你只想删除它出现的index.php?在这种情况下,您的解决方案过于复杂。你可能想要像
这样的东西RewriteRule ^(.*)index\.php/(.*)$ $1$2 [NS,NC,L,R=301]
这应该是唯一的规则,也不需要RewriteCond