将 .htaccess 转换为 nginx。Rewrite 无法正常工作

将 .htaccess 转换为 nginx。Rewrite 无法正常工作

我无法将 .htaccess 转换为 nginx 配置。我一直在尝试使用在线转换工具。要转换的 .htaccess 如下:

RewriteEngine on
RewriteCond %{REQUEST_URI} !/public
RewriteCond %{REQUEST_URI} !/index.php
RewriteRule ^(.*)$ index.php/?params=$1 [NC]

我一直在尝试使用以下 nginx 配置:

location / {
    rewrite ^(.*)$ index.php/?params=$1;
}

这根本无法正常工作。它还允许访问此目录中的其他文件。我只希望 index.php 可用。而且,这还需要使用 .htaccess 规则。

无法在生产服务器上安装 apache/httpd。而且我不想浪费资源在 docker 中运行 apache。

答案1

在 Apache 中,您可以使用这些RewriteCond指令来排除!/public/index.php。在 Nginx 中,只需添加一个单独的locations对于他们来说:

location /public {
}
location = /index.php {
}

你的rewrite几乎已经完成了,但与 Apache 不同的是,替代品Nginx 中的字符串始终是相对于根目录的(不是location相对的),并且应该以 为前导/。另外,我建议删除中间的斜线,php/?因为没有必要。

location / {
    rewrite ^(.*)$ /index.php?params=$1;
}

相关内容