Nginx 重定向问题

Nginx 重定向问题

我的 Nginx 设置当前是这样的:

 location / {
       if (!-e $request_filename){
            rewrite ^/(.*)$ https://domain.com/index.php?id=$1 redirect;
       }
 }

基本上,对于不存在的页面 (404),它会将用户重定向到主页。但现在我有一个 wordpress 博客设置https://domain.com/blog/,但任何 wordpress 项目例如。https://domain.com/blog/test也被重定向到主页。我想知道如何解决这个问题?

答案1

如果您的博客位于http://yourblog.com/blog,则需要将指令设置为该路径,除非您之前已将其指定为您的root目录(例如root /var/www/html/blog)。

您还应该不是使用if语句。这是 NGiNX 的常见陷阱。。 使用try_files反而。

location /blog {
                try_files $uri $uri/ /index.php?$args;
}

如果不想重定向子目录,则可以使用位置指令/blog将重定向限制到特定目录。=

例如

location = /blog {
                try_files $uri $uri/ /index.php?$args;
}

如果你想让它搜索任何事物说“博客”,并应用相同的重定向,你会在/之前使用之后,以便将其用作正则表达式。

例如

location /blog/ {
                try_files $uri $uri/ /index.php?$args;
}

有关位置指令的更多信息可以找到这里

答案2

根据问题/答案这里以及location 这里

没有不匹配正则表达式的语法。相反,匹配目标正则表达式并分配一个空块,然后使用 location / 匹配其他任何内容。

我想说你需要有一个匹配的位置指令/blog/和一个空块来防止重定向,例如

location /blog {
}

相关内容