InvalidSyntax
InvalidSyntax

Reputation: 9495

Rewriting url's with .htaccess

I am trying to rewrite page URL's with .htaccess. I would like to transform links like this (mysite.com/page.php -> mysite.com/page)

This is the code which I've used in previous sites with the same requirements

RewriteEngine on
RewriteCond /%{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.php

But when I try to access mysite.com/page it leeds to a 404 page where as mysite.com/page.php will show the page.

Can anyone explain if I have missed a setting somewhere? I have placed the .htaccess file in the site root dir and the permissions are set as 644.

Upvotes: 0

Views: 33

Answers (1)

Prix
Prix

Reputation: 19528

Instead of using %{REQUEST_FILENAME} which by the way you have an unneeded / there, I suggest you to use %{DOCUMENT_ROOT}/$1\.php, here is an example:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

## To internally redirect /anything to /anything.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)$ $1.php [L]

Additionally on your rule you have /$ which would again cause you trouble as you want to catch /page.

You could have made it /? to make the / optional.

Your .htaccess fixed should look like this:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-z0-9_-\s]+)/?$ /$1.php [NC,L]

Upvotes: 1

Related Questions