Regex .htaccess带参数URL的重写规则
另一个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?
.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
进行编码以反映url更改php
删除
.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/
目录。现在尝试编辑代码。