NGINX - 处理 ID 或用户名
NGINX - Handle both ID or Username
我有 2 个这样的网址:
1 - 示例。com/user/JohnFifty/
2 - 示例。com/user/45771/
两者都有效,但只能选其一。我想允许两者,这在 PHP 代码中启用。
我试过了
if ($arg_id ~ ([\d]+)[^\d]) {
rewrite ^/user/([^/]*)/$ /user.php?id= last;
}
rewrite ^/user/([^/]*)/$ /user.php?username= last;
为了检测这种情况,如何让 NGINX 检测 GET 请求是 ID 还是字符串(用户名)?
谢谢
这正是 map
block can be very helpful, being used among with the named capture groups:
的情况
map $id $id_type {
~^\d+$ id;
default username;
}
server {
...
rewrite ^/user/(?<id>[^/]+)/$ /user.php?$id_type=$id;
...
}
我有 2 个这样的网址:
1 - 示例。com/user/JohnFifty/
2 - 示例。com/user/45771/
两者都有效,但只能选其一。我想允许两者,这在 PHP 代码中启用。
我试过了
if ($arg_id ~ ([\d]+)[^\d]) {
rewrite ^/user/([^/]*)/$ /user.php?id= last;
}
rewrite ^/user/([^/]*)/$ /user.php?username= last;
为了检测这种情况,如何让 NGINX 检测 GET 请求是 ID 还是字符串(用户名)?
谢谢
这正是 map
block can be very helpful, being used among with the named capture groups:
map $id $id_type {
~^\d+$ id;
default username;
}
server {
...
rewrite ^/user/(?<id>[^/]+)/$ /user.php?$id_type=$id;
...
}