![try_files 服务回退到先前的条件之前](https://linux22.com/image/706702/try_files%20%E6%9C%8D%E5%8A%A1%E5%9B%9E%E9%80%80%E5%88%B0%E5%85%88%E5%89%8D%E7%9A%84%E6%9D%A1%E4%BB%B6%E4%B9%8B%E5%89%8D.png)
请耐心等待,因为我对此还很陌生。
我整理了一个 nginx 服务器配置,它运行良好,直到我注意到它在适用时不会抛出 404 错误。因此,我在 try_files 条件中添加了 =404 回退。但是现在它不满足 @rewrites 条件,并且显示除主页之外的所有页面为 404。
以下是配置的适用部分
server {
error_page 404 /404.html;
location / {
index index.php;
try_files $uri $uri/ @rewrite;
}
location @rewrite {
#rewrites
rewrite ^/listings/(\d+)/(.*)$ /index.php?op=default&_a=listing&id=$1 last;
rewrite ^/subcategories/(\d+)/(.*)$ /index.php?op=default&_a=subcategory&id=$1 last;
rewrite ^/categories/(\d+)/(.*)$ /index.php?op=default&_a=category&id=$1 last;
rewrite ^/companies/(\d+)/(.*)/(.*)$ /index.php?op=default&_a=vendor&id=$1&_b=$3 last;
rewrite ^/companies/(\d+)/(.*)$ /index.php?op=default&_a=vendor&id=$1 last;
rewrite ^/classifieds/(.*)/(.*)$ /index.php?op=default&_a=classified&cf_type=$1&url=$2 last;
rewrite ^/classifieds/(.*)$ /index.php?op=default&_a=classified&cf_type=$1 last;
rewrite ^/classifieds$ /index.php?op=default&_a=classified last;
rewrite ^/companies/(.*)$ /index.php?op=default&_a=vendor_index&ind=$1 last;
rewrite ^/companies$ /index.php?op=default&_a=vendor_index last;
rewrite ^/(.*)$ /index.php?op=default&_a=static&_b=$1 last;
}
}
我尝试使用位置 @error_page 块执行 [try_files $uri $uri/ @rewrite @error_page;],但也没有用。如果我删除 404,所有重写都可以完美运行。
任何帮助将不胜感激