Nginx重定向设置

时间:2012-11-20 20:01:17

标签: wordpress nginx

我的Nginx设置目前有这个:

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

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

2 个答案:

答案 0 :(得分:0)

您不应该使用if。请阅读nginx wiki上的IfIsEvil页面。相反,您应该使用try_files

您的配置应该更像这样:

location / {
    try_files $uri $uri/ @notfound
}

location @notfound {
    rewrite ^(.*)$ https://domain.com/index.php?id=$1 redirect; 
}

真的,你根本不应该这样做。相反,您应该设置custom error页面。将每个404重定向到主页对您的SEO都不利。

编辑:我刚刚意识到你将URL传递给了“id”。所以我删除了关于使用.而不是^(.*)$的第二条评论。仍然是错误页面是你最好的选择。您可以使用$_SERVER['REQUEST_URI']获取网址(如果您避免使用硬重定向)。

page包含一些可能对您有帮助的示例配置。它有一些wordpress配置。

答案 1 :(得分:0)

为所请求的网址执行不同的操作,其路径以“/ blog /”开头,添加相应的位置,如下所示:

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


location /blog/ {
    #add in whatever directives are needed to serve your wordpress
}