我的 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;
}
有关位置指令的更多信息可以找到这里。