htaccess Rewrite URL Without .php Extension To Fil

2019-07-16 14:34发布

问题:

I got a website that using osCommerce which all the page can be access directly with http://www.example.com/pagename.php, but now I would like to tweak the htaccess file so that it can supports http://www.example.com/username and then redirecting to http://www.example.com/account.php?id=username, while other pages still can be access using the same old way.

It means that if the htaccess detect that the URL didn't have any extension, then it will be redirecting to http://www.example.com/account.php?id=username.

Thank you!

回答1:

You just need one rule:

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


回答2:

You can use this code to remove php extension from URL:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension snippet

# This will redirect you from http://www.example.com/username.php to 
# http://www.example.com/username externally                                                          
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# This will redirect you from http://www.example.com/username to 
# http://www.example.com/username internally   
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]