.HTACCESS 添加到 slugs
.HTACCESS adding to slugs
因此,我目前正在 PHP 中构建 REST API。
我设法让 slug 正常工作。
如果我请求 /api/admin/v1/users/1
,它将 return 我需要的用户。
但是,我还需要能够添加到它,例如/api/admin/v1/users/1/keys
.
管理 slug 的 HTACCESS 文件在文件夹本身中 (/users/
)。
RewriteEngine On
RewriteRule ^(.*)$ user.php?slug= [L]
我尝试添加另一行,但我想我搞砸了(我对 HTACCESS 不是那么先进)
RewriteRule ^(.*)/keys$ keys.php?slug= [L]
这没有做任何事情,它仍然是 return 用户对象。
第二条规则不起作用,因为 L 标志保留为:最后 - 停止处理规则
因此您需要编辑为:
RewriteEngine On
RewriteRule ^(.*)$ user.php?slug= [QSA, L]
RewriteRule ^(.*)/keys$ keys.php?slug= [QSA, L]
RewriteRule ^(.*)$ user.php?slug= [L]
RewriteRule ^(.*)/keys$ keys.php?slug= [L]
第一条规则匹配所有内容,因此第二条规则永远不会被处理。但是由于第一条规则匹配 everything 它也会在重写引擎的第二次传递中重写自己(到 user.php?slug=user.php
)。
您可以通过使正则表达式更具限制性来解决这些问题。从您的示例 URL 看来 slug
是 numeric - 在这种情况下,您可以限制正则表达式仅匹配数字 (0-9)。
例如:
RewriteRule ^(\d*)$ user.php?slug= [L]
RewriteRule ^(\d+)/keys$ keys.php?slug= [L]
请注意,第一条规则也匹配空 URL-path,即。根本没有鼻涕虫(就像你原来的规则一样)。第二条规则不允许空 slug(它永远不会匹配)。
因此,我目前正在 PHP 中构建 REST API。
我设法让 slug 正常工作。
如果我请求 /api/admin/v1/users/1
,它将 return 我需要的用户。
但是,我还需要能够添加到它,例如/api/admin/v1/users/1/keys
.
管理 slug 的 HTACCESS 文件在文件夹本身中 (/users/
)。
RewriteEngine On
RewriteRule ^(.*)$ user.php?slug= [L]
我尝试添加另一行,但我想我搞砸了(我对 HTACCESS 不是那么先进)
RewriteRule ^(.*)/keys$ keys.php?slug= [L]
这没有做任何事情,它仍然是 return 用户对象。
第二条规则不起作用,因为 L 标志保留为:最后 - 停止处理规则
因此您需要编辑为:
RewriteEngine On
RewriteRule ^(.*)$ user.php?slug= [QSA, L]
RewriteRule ^(.*)/keys$ keys.php?slug= [QSA, L]
RewriteRule ^(.*)$ user.php?slug= [L] RewriteRule ^(.*)/keys$ keys.php?slug= [L]
第一条规则匹配所有内容,因此第二条规则永远不会被处理。但是由于第一条规则匹配 everything 它也会在重写引擎的第二次传递中重写自己(到 user.php?slug=user.php
)。
您可以通过使正则表达式更具限制性来解决这些问题。从您的示例 URL 看来 slug
是 numeric - 在这种情况下,您可以限制正则表达式仅匹配数字 (0-9)。
例如:
RewriteRule ^(\d*)$ user.php?slug= [L]
RewriteRule ^(\d+)/keys$ keys.php?slug= [L]
请注意,第一条规则也匹配空 URL-path,即。根本没有鼻涕虫(就像你原来的规则一样)。第二条规则不允许空 slug(它永远不会匹配)。