根目录上的自定义用户 URL?



我想在根目录上有一个用户配置文件,因为它目前在 example.com/u/User,我想要 example.com/User,

所以我做了这个配置:

location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
location @try-user {
rewrite ^(.*)$ /profile.php?user=$1;
}
location / {
try_files $uri $uri.html $uri/ @extensionless-php @try-user;
# To do: try-page
index index.html index.htm index.php;
expires 1h;
rewrite ^/messages/(.*)$ /messaging.php?u=$1;
}

每当我转到具有该配置的任何页面时,它都会转到@try用户,当我输入用户名(example.com/Phil)时,我得到"找不到用户"。

谁能帮忙?

您的try_files语句并不严格正确,因为只有最终项可以是命名位置。有关详细信息,请参阅此文档。

nginxURI 都以前导/开头。在重写中,如果您尝试捕获用户名,则应避免捕获前导/

例如:

location @try-user {
rewrite ^/(.*)$ /profile.php?user=$1;
}
location / {
try_files $uri $uri.html $uri/ @try-user;
...
}

您可能希望有多个rewrite语句,并对它们进行排序,以便将与用户名匹配的模式重定向到profile.php而其他任何内容都被视为 PHP 文件。例如:

location @try-user {
rewrite ^/([^/]+)$ /profile.php?user=$1 last;
rewrite ^(.*)$ $1.php last;
}

有关详细信息,请参阅此文档。

相关内容

  • 没有找到相关文章

最新更新