我正在尝试将 location 的所有流量传递^/[a-z0-9]{24}$
给不同根目录的 index.html。我的配置设置如下:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
root /Users/me/sites/store_front/static;
index index.html;
try_files $uri $uri/ $uri.html =404;
location ~ "^/[a-z0-9]{24}$" {
alias /Users/me/web_app/static;
try_files $uri index.html;
}
}
出于某种原因,当我卷曲这个网址时,我得到一个 404:
$ curl -I https://example.com/55c898e7faa137f42409d403
HTTP/1.1 404 Not Found
Server: nginx/1.8.0
Content-Type: text/html; charset=UTF-8
Content-Length: 168
Connection: keep-alive
有谁知道如何让这个别名工作?
更新:
需要注意的是,我需要 index.html 中的所有相对 url 才能正确加载:
<link href="/styles/main.css" rel="stylesheet" type="text/css"
<script src="/javascript/main.js"></script>
这些文件实际上存在于web_app
目录中,但 nginx 尝试从中加载它们store_front
谢谢
指向很
^/[a-z0-9]{24}$
容易index.html
。资源文件需要具有唯一的 URI,否则/styles/main.css
不知道要提供哪些文件。/javascript/main.js
nginx
如果store_front 也使用
/styles
and/javascript
前缀,则需要隔离各个文件:如果
/styles
,/javascript
和^/[a-z0-9]{24}$
URI 都是唯一的,您可以将上述内容组合到一个位置:甚至: