nginx如果url包含特定单词,如何重定向到wordpress文件夹

nginx如果url包含特定单词,如何重定向到wordpress文件夹,nginx,nginx-location,nginx-config,Nginx,Nginx Location,Nginx Config,首先,我的域名根被配置为使用反向代理服务一个有角度的网页,该代理重定向到本地ip/端口,这就像一个魅力。现在,如果url包含要重定向到wordpress文件夹的/blog,那么当我想要覆盖根规则时,问题就出现了。目前,通过此配置,我可以访问wordpress,但只需访问特定的URL,如example.com/blog/wp admin/index.php,但如果我访问example.com/blog,仍将访问angular应用程序。我已经按照如下方式配置了我的nginx(我必须说这是我第一次配置

首先,我的域名根被配置为使用反向代理服务一个有角度的网页,该代理重定向到本地ip/端口,这就像一个魅力。现在,如果url包含要重定向到wordpress文件夹的
/blog
,那么当我想要覆盖根规则时,问题就出现了。目前,通过此配置,我可以访问wordpress,但只需访问特定的URL,如
example.com/blog/wp admin/index.php
,但如果我访问
example.com/blog
,仍将访问angular应用程序。我已经按照如下方式配置了我的nginx(我必须说这是我第一次配置web服务器):

如果我停止我的angular应用程序,它工作得很好,所以我想我首先需要触发/blog位置,但我尝试了所有可能的形式,但没有结果。有人知道怎么了吗?我以为第一条规则是先触发的,但似乎不是

提前谢谢


如果需要,我可以附加任何其他配置文件;)

URI
/blog
与您的
位置的正则表达式不匹配,这需要在URI中的某个位置添加一个要匹配的
/

简单的解决方案是:

location /blog {
    try_files $uri $uri/ /blog/index.php?q=$uri&$args;
    ...
}
上述内容将匹配
/blog
/blog/
,但也匹配
/blogx
(这可能是不需要的)


您可以使用修改后的正则表达式,例如:

location ~ ^/blog(/|$) {
    try_files $uri $uri/ /blog/index.php?q=$uri&$args;
    ...
}

最有效的解决方案是使用前缀位置,但需要更多的键入:

location /blog {
    return 301 /blog/;
}
location /blog/ {
    try_files $uri $uri/ /blog/index.php?q=$uri&$args;
    ...
}

更多信息,请参阅。顺便说一句,您的
try\u文件
语句包含一个伪参数

谢谢你的回复Richard,我用你的建议更新了配置,但仍然有相同的行为。这让我觉得问题可能出在角度布线上。。。但我必须说我已经删除了它的备用规则。不确定我是否在正确的上下文中查找错误…另外,请确保在任何更改后清除浏览器的缓存并重新启动Nginx。是的,我已经完成了。现在我已经用curl
curl进行了测试https://example.com/blog/ 
我得到了正确的wordpress html内容,而Chrome正在重定向到Angular appNo,我得到了永久移动的301(我使用了你的第二个代码片段,而不是第三个代码片段,如果知道有用的话),所以在我看来,Chrome出于某种原因仍然依赖于它的缓存。检查访问日志-查看Chrome正在向您的服务器请求什么。
location /blog {
    return 301 /blog/;
}
location /blog/ {
    try_files $uri $uri/ /blog/index.php?q=$uri&$args;
    ...
}