Reputation: 417
I am using codeigniter. There is always a way to remove index.php from url. The code is following for htaccess and it works fine.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
But the PROBLEM is: we still can access the website with index.php like following URLS.
Both are accessible:
http://www.yoursite.com/index.php/cat/subcat
http://www.yoursite.com/cat/subcat
a forced removal of index.php is possible through htaccess? I actually dont want google to have both duplicate copies of same page. Any suggestion is welcomed
Upvotes: 2
Views: 84
Reputation: 45829
Try the following at the top of your .htaccess
file:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^index\.php/?(.*) /$1 [R=302,L]
This checks that /index.php
exists on the initial request (not just the rewritten request) and then redirects to the URL-path that follows if it is. By specifically checking against THE_REQUEST
you avoid a redirect loop.
The trailing slash is optional, so it will also catch requests for /index.php
.
Change the 302
(temporary) to 301
(permanent) when you are sure it's working OK.
Upvotes: 3