htaccess重写没有.php扩展名到文件的URL

时间:2013-09-17 02:55:29

标签: php apache .htaccess mod-rewrite url-rewriting

我有一个使用osCommerce的网站,可以使用http://www.example.com/pagename.php直接访问所有页面,但现在我想调整htaccess文件,以便它可以支持http://www.example.com/username,然后重定向到{ {1}},而其他网页仍然可以使用相同的旧方式进行访问。

这意味着如果htaccess检测到该URL没有任何扩展名,那么它将重定向到http://www.example.com/account.php?id=username

谢谢!

2 个答案:

答案 0 :(得分:6)

您只需要一条规则:

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

答案 1 :(得分:3)

您可以使用此代码从URL中删除php扩展名:

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]