reactjs - 当有一个带问号的 URL 并且等于 react nginx 时运行另一个应用程序
问题描述
我有 2 个反应构建应用程序,我只想在 URL 与 www.example.com/inventory/?id=... 我的配置 nginx 一致时运行其中一个
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl default_server;
index index.html;
ssl on;
ssl_certificate /etc/ssl/example.com.crt;
ssl_certificate_key /etc/ssl/example.com.key;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
root /var/www/example.com/;
location / {
root /var/www/example.com/public/admin;
try_files $uri $uri/ =404;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fmp.sock;
}
}
location /inventory/?id= {
root /var/www/example.com/public/inventory;
try_files $uri $uri/ =404;
}
我收到 404 nginx 错误,我做错了什么?
解决方案
查询字符串不是用于匹配or语句的规范化 URI的一部分。location
rewrite
您的位置块可以匹配所有以开头的 URI,/inventory/
但您需要使用if
块来拒绝没有匹配参数的任何请求。请参阅此使用注意事项if
。
例如:
location /inventory/ {
if ($arg_id = "") { return 404; }
root /var/www/example.com/public;
try_files $uri $uri/ =404;
}
请注意,文件的路径是通过将root
指令的值与 URI 连接形成的,因此除非您的意思是inventory
在路径中包含两个目录,否则它也不应该出现在root
语句中。有关详细信息,请参阅此文档。
推荐阅读
- reactjs - 当前没有配置加载器来处理这个文件 构建反应应用程序时出错
- python - pyspark ALS 推荐系统错误 - SparkContext 已关闭;迷失模式;
- laravel - Laravel8 打印的个人 ID 的 pdf 文件
- ios - SwiftUI - 将函数 ID 设置为 post.id
- macos - 链接 libPocoCrypto.dylib 时,在 Mac Catalina 上构建 Poco 失败
- node.js - 如何从 nodeJs 应用程序在 imageKit 上上传多个图像?
- opencv-python - 如何在 ubuntu 的 anaconda jupyter notebook 中安装 OpenCv 库
- python - 将 Python 文件连接在一起以简化导入
- python-3.x - 如何检查列值何时从 0 变为 1 并且在多次计数后第 1 列和第 2 列值相同
- flutter - Flutter flutter_test 小部件测试金色屏幕截图中的文本空白