将所有请求发送到 index.html,某些分机除外
Send all requests to index.html except certain extensions
我正在使用 nginx 来为我的 React 应用程序提供服务,它可以很好地将除静态文件之外的所有内容重定向到 index.html,具体如下:
location / {
try_files $uri /index.html =404;
}
一段时间以来我对此很满意,但我注意到当某些图像和 javascript 文件在服务器上不可用时,index.html 将被提供。这本身不是问题。
然而,当在应用程序之前添加缓存层时,它会缓存所有这些结果,因为它们确实有 200 作为状态代码。
我想要的是提供静态文件并在其他请求不以某些扩展名(.js、.[=37=)结尾时将其他请求重定向到index.html ]、.png、.jpg、.gif 等...)
例如
http://example.com/some/path -> /index.html
http://example.com/existing-file.doc -> /existing-file.doc
http://example.com/some/non-existing-image.png -> 404 error
所以地址像 http://example.com/main.1234.js
returns js 文件(如果存在),否则为 404 响应,永远不会 index.html
我是否应该制作一个正则表达式块,例如:
location ~ \.js$|\.css$|\.png$|\.jpg$ {
what do I write here?
}
我不完全确定如何最好地解决这个问题。
将块留空是完全有效的,它将从周围块继承 root
和 index
的值。空位置块的默认操作类似于 try_files $uri $uri/ =404;
您可能还想简化正则表达式,例如:
location ~ \.(js|css|png|jpg)$ {
}
我正在使用 nginx 来为我的 React 应用程序提供服务,它可以很好地将除静态文件之外的所有内容重定向到 index.html,具体如下:
location / {
try_files $uri /index.html =404;
}
一段时间以来我对此很满意,但我注意到当某些图像和 javascript 文件在服务器上不可用时,index.html 将被提供。这本身不是问题。
然而,当在应用程序之前添加缓存层时,它会缓存所有这些结果,因为它们确实有 200 作为状态代码。
我想要的是提供静态文件并在其他请求不以某些扩展名(.js、.[=37=)结尾时将其他请求重定向到index.html ]、.png、.jpg、.gif 等...)
例如
http://example.com/some/path -> /index.html
http://example.com/existing-file.doc -> /existing-file.doc
http://example.com/some/non-existing-image.png -> 404 error
所以地址像 http://example.com/main.1234.js
returns js 文件(如果存在),否则为 404 响应,永远不会 index.html
我是否应该制作一个正则表达式块,例如:
location ~ \.js$|\.css$|\.png$|\.jpg$ {
what do I write here?
}
我不完全确定如何最好地解决这个问题。
将块留空是完全有效的,它将从周围块继承 root
和 index
的值。空位置块的默认操作类似于 try_files $uri $uri/ =404;
您可能还想简化正则表达式,例如:
location ~ \.(js|css|png|jpg)$ {
}