1

我想在 nginx 中的 apache 中进行 url 重写。基本上是为了给基于位置的请求一个更友好的 url 外观。我一直找不到 404 页面。

server {

  # site definitions (...)

  # fastcgi defitions (...)

  location / {

    # Code to make wp super cache work (...)

    rewrite ^/ads/category/(.*)/(.*)$ /ads/category/$1?location=$2 permanent;
    rewrite ^/category/(.*)/(.*)$ /ads/category/$1?location=$2 last;
    rewrite ^/category/(.*)$ /ads/category/$1 last;

  }
}

我将上面的代码放在虚拟主机定义 /etc/nginx/sites-enable/mysite.xml 中。到目前为止,我不知道调试正在发生的事情的真正方法。

4

1 回答 1

0

而不是在单个位置 / {} 块中定义所有重写规则;尝试这样的事情:

# site definitions (...)

location / {
    # Code to make wp super cache work (...)

    # remove following line if you already have an index at site definitions..
    index index.php;

    try_files $uri $uri/ /index.php?$args;
  }

  if (!-f $request_filename) {
       rewrite ^/ads/category/(.*)/(.*)$ /ads/category/$1?location=$2 permanent;
       rewrite ^/category/(.*)/(.*)$ /ads/category/$1?location=$2 break;
       rewrite ^/category/(.*)$ /ads/category/$1 break;
  }

 # fastcgi defitions (...)

我知道在 nginx 世界中是否是邪恶的,但它在 location {} 块中使用时会出现问题,类似的配置在我的虚拟服务器上就像一个魅力一样工作。

于 2013-04-22T16:00:53.023 回答