try_files 服务回退到先前的条件之前

try_files 服务回退到先前的条件之前

请耐心等待,因为我对此还很陌生。

我整理了一个 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,所有重写都可以完美运行。

任何帮助将不胜感激

相关内容