Nginx

將 .htaccess 轉換為 nginx。重寫不能正常工作

  • May 26, 2017

我無法將 .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。

在 Apache 中,您有這些RewriteCond用於排除!/public和的指令/index.php。在 Nginx 中,只需為它們添加一個單獨location的 s

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

rewrite幾乎就在那裡,但與 Apache 不同的是,Nginx 中的替換字元串始終是根相對(而不是location相對)並且應該具有前導/. php/?另外,我建議刪除不必要的斜線。

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

引用自:https://serverfault.com/questions/852237