nginx 重写使用 last 和 break 抛出 404

nginx 重写使用 last 和 break 抛出 404

我的 Yii 网站有一个如下所示的虚拟主机

服务器 {
        根目录/var/www/代码;
        索引 index.php 索引.html;
        服务器名称 example.com;
        地点 / {
           重写 ^/en/keyword$ /en/spesfic_controller/ 最后;
           ....
         }
}

如果我用最后的或者休息在上面的重写规则中,nginx 会抛出 404 错误,但如果我将其更改为永恒的,它会重定向它并正常工作!!可能出了什么问题?或者我错过了什么?(错误日志中没有任何内容)
编辑
完整的虚拟主机如下:

服务器 {
    听80;
        根目录/var/www/代码;
        索引 index.php 索引.html;
服务器名称 example.com;
地点 / {
        重写 ^/[/]*$ /ar/ 永久;
        proxy_set_header 接受编码“”;
        proxy_set_header X-真实IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        如果(!-e $请求文件名){
                重写 ^/(.*)$ /index.php?q=$1 最后;
                }
        }
        重写 ^/en/jobs-in-riyadh$ "/en/jobs/SearchResult/city_id/a:1:%7Bi:0;s:2:%2210%22;%7D" 最后;

        错误日志 /var/log/nginx/error.log 警告;
        访问日志/var/log/nginx/access.log;
        如果 ($http_user_agent ~ libwww-perl) {
              返回 403;
        }
        位置 ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|ttf|woff)$ {
                访问登录关闭;
                log_not_found关闭;
                最大过期时间;#你可以将其设置为 30d 之类的;
                add_header 指令公共;
                add_header Cache-Control "public";#您可以设置多个以逗号分隔的“,must-revalidate,proxy-revalidate”;
        }
        位置 ~ \.php$ {
                包括/etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index索引.php;
                fastcgi_param SCRIPT_FILENAME /var/www/code/$fastcgi_script_name;
                fastcgi_buffer_size 是4k;
                fastcgi_缓冲区 256 4k;
                fastcgi_max_temp_file_size 0;
                代理缓冲关闭;
                发送超时180秒;
                代理读取超时120秒;
                代理连接超时120秒;
                fastcgi_send_timeout 120秒;
                fastcgi_读取超时120秒;
                fastcgi_连接超时120秒;
        }
        位置 ~ /\. {
            访问登录关闭;
            log_not_found关闭;
            全部否认;
        }
}

相关内容