![](/img/trans.png)
[英]Remove .php extension using htacess and also keep other rules or rewrite
[英]Remove ?id= in php using .htacess
我正在尝试从 URL 中删除?id=
并将?id=
替换为斜杠 ( /
)。
我想显示地址:
http://localhost/new/view-seller?id=534f5ddbdd
作为:
http://localhost/new/view-seller/534f5ddbdd
我设法从 URL 中删除了.php
,但我仍然对?id=
有疑问
带有?id=
的原始链接可访问。 当我导航到没有?id=
的页面时,我得到:在此服务器上找不到请求的 URL。
有人知道我该如何解决这个问题吗?
这是我的.htaccess
:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
您需要在根.htaccess
文件中执行类似以下操作:
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+)/([\da-z]+)$ $1.php?id=$2 [L]
上面将/<file>/<id>
重写为/<file>.php?id=<id>
,前提是/<file>.php
存在。 <file>
可以包含多个路径段(例如,您的示例中的new/view-seller
)。
这假设<id>
只是字母数字小写。 如果这是十六进制的,那么应该相应地使正则表达式更具体。
而且,如果这只适用于view-seller
,那么正则表达式应该再次变得更加具体。
如果您需要将其与通用的“append .php
”规则结合使用,则上述规则应首先为 go。 例如:
# 1. Rewrite "/<file>/<id>" to "/<file>.php?id=<id>"
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+)/([\da-z]+)$ $1.php?id=$2 [L]
# 2. Rewrite "/<file>" to "/<file>.php"
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.+) $1.php [L]
规则 #2 与您的原始规则基本相同,除了您的原始规则有几个问题。 (次要点,但目录检查在这里是多余的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.