![将 apache mod 重写规则转换为 nginx](https://linux22.com/image/730653/%E5%B0%86%20apache%20mod%20%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%E8%BD%AC%E6%8D%A2%E4%B8%BA%20nginx.png)
我在将 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_*
指令。