我想做的事:
这是一个单页面的应用程序.在我的更改配置看起来像这样(并且它工作):
location / {
root /home/eshlox/projects/XXX/project/project/assets/dist;
try_files $uri $uri/ /index.html =404;
}
Run Code Online (Sandbox Code Playgroud)
我试过使用if语句:
location / {
set $social 1;
if ($http_user_agent ~* "facebookexternalhit") {
set $social UA;
}
if ($uri ~* "^/(\d+)$") {
set $social "${social}URL";
}
if ($social = UAURL) {
rewrite ^/(\d+)$ /api/content/item/$1?social=1;
}
root /home/eshlox/projects/XXX/project/project/assets/dist;
try_files $uri $uri/ /index.html =404;
}
Run Code Online (Sandbox Code Playgroud)
使用此配置,只有在条件为真或假的情况下,一切都按预期工作.如果其中一个条件为真且第二个条件为假(反之亦然),则nginx始终返回状态404.
我在nginx网站上找到了"IfIsEvil",我试图使用映射(在这种情况下我可以使用映射吗?)但我仍然无法解决这个问题.
有任何想法吗?
最好的祝福.
有好文章。
首先,我已将root指令移至服务器级别。其次,location是检查网址的最佳方法。所以我重新考虑你的要求
我们必须重写 url,结果是:
root /home/eshlox/projects/XXX/project/project/assets/dist;
location / {
try_files $uri $uri/ /index.html;
}
location ~ "^/\d+$" {
if ($http_user_agent ~* "facebookexternalhit") {
rewrite (.+) /api/content/item$1?social=1;
}
try_files $uri $uri/ /index.html;
}
Run Code Online (Sandbox Code Playgroud)
而且,几乎没有理由在指令中添加=404after 。/index.htmltry_files
| 归档时间: |
|
| 查看次数: |
16097 次 |
| 最近记录: |