Regex .htaccess带参数URL的重写规则

Regex .htaccess带参数URL的重写规则,regex,apache,.htaccess,mod-rewrite,url-rewriting,Regex,Apache,.htaccess,Mod Rewrite,Url Rewriting,另一个url重写问题,抱歉,但有点麻烦 我已从文件中删除了.php扩展名: RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ $1.php 注意:[app/设置为公共目录] 注意:[Apacheserver] 目标 我想要的是像这样的URL: www.example.com/app/user/123而不是www.example.com/app/user.php?

另一个url重写问题,抱歉,但有点麻烦

我已从文件中删除了
.php
扩展名:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.php
注意:[
app/
设置为公共目录]

注意:[
Apache
server]

目标

我想要的是像这样的
URL

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内部服务器错误

  • 这也会影响
    GET
    POST
    请求,还是需要对
    php
    进行编码以反映url更改
我遇到的链接

还有很多其他的

编辑


删除
.php
的第一条规则是否会影响后面的规则?i、 e.阻止他们处理规则排序可能是导致此问题的原因。按正确的顺序尝试以下规则:

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]

规则的排序可能是导致此问题的原因。按正确的顺序尝试以下规则:

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]

试过了。它不会捕获任何带有
.php
的文件。404找不到您的
/app/
目录。请立即尝试编辑的代码。请尝试。它不会捕获任何带有
.php
的文件。404找不到您的
/app/
目录。现在尝试编辑代码。