我正在使用codeigniter。始终有一种方法可以从url中删除index.php。代码跟随htaccess,它工作正常。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
但问题是:我们仍然可以像index.php一样访问网站。
两者都可以访问:
http://www.yoursite.com/index.php/cat/subcat
http://www.yoursite.com/cat/subcat
可以通过htaccess强制删除index.php吗?我实际上不希望谷歌同时拥有相同页面的重复副本。欢迎任何建议
答案 0 :(得分:3)
在.htaccess
文件的顶部尝试以下操作:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^index\.php/?(.*) /$1 [R=302,L]
这将检查初始请求中是否存在/index.php
(而不仅仅是重写的请求),然后重定向到后面的URL路径(如果是)。通过专门检查THE_REQUEST
,您可以避免重定向循环。
尾部斜杠是可选的,因此它还会捕获/index.php
的请求。
当您确定它正常工作时,将302
(临时)更改为301
(永久)。