所以,我目前正在用 PHP 構建一個 REST API。
我設法讓蛞蝓大部分作業。如果我請求/api/admin/v1/users/1,它將回傳我需要的用戶。但是,我還需要能夠添加到它,例如/api/admin/v1/users/1/keys.
管理 slug 的 HTACCESS 檔案位于檔案夾本身 ( /users/) 中。
RewriteEngine On
RewriteRule ^(.*)$ user.php?slug=$1 [L]
我嘗試添加另一行,但我認為我搞砸了(我對 HTACCESS 沒有那么先進)
RewriteRule ^(.*)/keys$ keys.php?slug=$1 [L]
這沒有做任何事情,它仍然回傳用戶物件。
uj5u.com熱心網友回復:
RewriteRule ^(.*)$ user.php?slug=$1 [L] RewriteRule ^(.*)/keys$ keys.php?slug=$1 [L]
第一條規則匹配所有內容,因此第二條規則永遠不會被處理。但是由于第一個規則匹配所有內容,它也會user.php?slug=user.php在重寫引擎的第二次通過時重寫自己(到)。
您可以通過使正則運算式更具限制性來解決這些問題。從您的示例 URL 看起來像是slug數字- 在這種情況下,您可以將正則運算式限制為僅匹配數字 (0-9) 。
例如:
RewriteRule ^(\d*)$ user.php?slug=$1 [L]
RewriteRule ^(\d )/keys$ keys.php?slug=$1 [L]
請注意,第一條規則也匹配一個空的 URL 路徑,即。根本沒有蛞蝓(就像你原來的規則一樣)。第二條規則不允許空 slug(無論如何它永遠不會匹配)。
uj5u.com熱心網友回復:
第二條規則不起作用,因為 L 標志保留為:last - 停止處理規則
因此,您需要編輯為:
RewriteEngine On
RewriteRule ^(.*)$ user.php?slug=$1 [QSA, L]
RewriteRule ^(.*)/keys$ keys.php?slug=$1 [QSA, L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/454718.html
