Nginx 规则转换

Nginx 规则转换

我有以下 htaccess 规则:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

我使用了在线转换器,它给了我这个结果,但是它不起作用,所以我真的不确定它出了什么问题。

location / {
rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
}

提前致谢

答案1

在 nginx 中,您不需要将其用作rewrite前端控制器,而是使用try_files。您的配置看起来应该像这样:

server {
    ...
    try_files $uri $uri/ /index.php;

    location ~ (.+)/$ {
        return 301 $scheme://$host$1;
    }
}

相关内容