我在我的 ngix conf 文件中进行了重写,该文件正常工作,但它似乎将位置块包含为 $uri 变量的一部分。我只想要位置块之后的路径。我当前的配置代码是:
location /cargo {
try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}
Run Code Online (Sandbox Code Playgroud)
使用http://localhost/cargo/testpage重定向的示例 url有效,但是我的 php 文件接收到的“_REWRITE_COMMAND”参数的值为“/cargo/testpage”。我需要去掉位置块,只需要“testpage”作为 $uri
我很确定有一个正则表达式语法来拆分 $uri 并使用 $1 $2 等将其分配给一个新变量,但是我找不到任何示例来使用不属于重写的正则表达式进行变量赋值陈述。我一直在寻找和尝试几个小时,但我似乎无法通过这最后一步。
我也知道我可以在应用程序代码中删除它,但我想尝试在 nginx conf 中修复它的原因是出于兼容性原因,因为它也在 Apache 上运行。我还应该说,我已经找到了一种非常hacky的方法来做到这一点,但它涉及一个“if”语句来检查文件是否存在,并且文档特别指出不要那样做。
The*_*uni 20
环顾四周,我猜想使用带有捕获的正则表达式位置是最简单的。调整你的例子我最终得到:
location ~ ^/cargo(.*) {
try_files $1 $1/ /cargo/index.php?_REWRITE_COMMAND=$1&args;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我找到了另一件对我有用的东西(因为我使用的是 gunicorn,我无法选择通过什么)
你应该能够逃脱
location /cargo {
rewrite ^/cargo(.*)$ $1 break;
try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23242 次 |
| 最近记录: |