繁体   English   中英

使用.htacess 删除?id= php

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM