簡體   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