I’m trying to create clean URLs on my website. Now I succeeded in configuring apache so every request like mysite.com/page will work. But I also want that requests for mysite.com/page.php will be redirected to mysite.com/page. I’ve set environment variable in .htaccess to check if i already been redirected to prevent loops, but i still get them… Here’s the .htaccess:
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteBase / # set the variable RewriteRule ^$ - [L] RewriteRule ^(.*)$ $1 [E=REWROTE:0] # this works fine # make mysite.com/page work and set REWROTE variable to 1 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [L,E=REWROTE:1] # but if i enable this, i get redirected and then stuck in a loop # redirect mysite.com/page.php to mysite.com/page , but only if REWROTE not 1 #RewriteCond %{ENV:REWROTE} !^1$ #RewriteRule ^(.*)\.php$ $1 [R=301,L]
Thanks!
Add this rule above your existing rewrite rules to stop redirecting if the request has already been redirected once (ref):