如何将 htaccess 规则“转换”为 nginx 规则?

如何将 htaccess 规则“转换”为 nginx 规则?

我想将此规则“转换”为 nginx 规则。我认为位置块是正确的位置,但我的解决方案不起作用。

Options -Indexes
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f
RewriteRule ^(.*)$ public/$1 [QSA,END]
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^(.+)$ index.php?route=$1 [QSA,L]

我试过这个

location / {
  rewrite ^(.*)$ /public/$1;
  rewrite ^(.+)$ /index.php?route=$1 break;
}

答案1

nginxrewrite指令是无条件应用的,而重写规则中则有许多条件。使用try_files 指令反而:

location = /index.php {
    # PHP options
}

location / {
    try_files /public$uri /public$uri/ /index.php?route=$uri;
}

相关内容