另一个网址重写问题,道歉,但有点麻烦。
我已从文件中删除.php
扩展程序:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.php
注意:[app/
设置为公共目录]
注意:[Apache
服务器]
目标
我想要的是URLs
这样的话:
www.example.com/app/user/123
代替www.example.com/app/user.php?id=123
我尝试过:RewriteRule ^user/([0-9]+)/?$ user.php?id=$1 [R=301,L,NC]
但它只返回500 Internal Server Error
GET
和POST
个请求,还是需要对php
进行编码以反映网址更改?我遇到的链接
right order of rewrite rules in an htaccess file
http://corz.org/serv/tricks/htaccess2.php
http://www.workingwith.me.uk/articles/scripting/mod_rewrite
.htaccess RewriteRule to preserve GET URL parameters
加上许多其他人。
修改
删除.php
的第一条规则会影响之后的规则吗?即阻止他们处理
答案 0 :(得分:1)
规则的排序可能会导致此问题。请按正确的顺序尝试这些规则:
RewriteEngine On
RewriteBase /app/
RewriteRule ^user/([0-9]+)/?$ user.php?id=$1 [QSA,L,NC]
# hide .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/app/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]