Aurazo Script
Aurazo Script

Reputation: 115

PHP rewriting URL to remove .php extension

I am working on a project where I decided to get rid of the .php extension from the URL of my app. I am successful using the htaccess code given below. But the problem is, the page still loads using .php extension if typed manually or loaded from the history.

My current .htaccess code.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

I want it to always load with www.example.com/dashboard except www.example.com/dashboard.php even if dashboard.php is manually typed.

UPDATED .htaccess code

RewriteEngine On
RewriteBase /dateapp/
RewriteRule ^([^\.]+).php$ $1 [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,END]

Upvotes: 0

Views: 58

Answers (2)

anubhava
anubhava

Reputation: 786091

You may use this code in dateapp/.htaccess:

RewriteEngine On
RewriteBase /dateapp/

RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

Upvotes: 0

Michal Hynčica
Michal Hynčica

Reputation: 6179

You can add redirect as first rule.

RewriteEngine On
RewriteRule ^([^\.]+).php$ /$1 [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,END]

You have to use END flag instead of L otherwise the redirects will end in infinite loop. This will work if the .htaccess is in your webroot folder.

In case you have .htaccess in 'folder' subfolder you will have to add RewriteBase

RewriteEngine On
RewriteBase /folder/
RewriteRule ^([^\.]+).php$ $1 [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,END]

Upvotes: 1

Related Questions