我在将 apache mod 重写规则转换为 nginx 时遇到问题
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ backend/index.php?a=$1 [L,QSA]
我尝试了这些规则,但没有效果:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /backend/index.php?a=$1 break;
}
}
答案1
它不起作用,因为你有break
。Break
意味着“重写文件名并终止在当前位置的搜索”。但当前位置对 PHP 处理一无所知(正如您从配置文件片段中看到的那样)。
您需要删除break
并获取 PHP 文件的正则表达式位置以及fastcgi_*
指令。