/ / .htaccess to nginx.conf Rewrite rules-apache、.htaccess、nginx

.htaccess to nginx.conf書き換えルール - apache、.htaccess、nginx

私は.htaccessからnginx.confに切り替えていますが、この行をnginxに翻訳するのに問題があります:

RewriteBase /
RewriteCond $1 !^(index.php|assets|uploads|fav.ico)
RewriteRule ^(.*)$ index.php/$1 [L]

私はこれを試した:

if ($1 !~ "^(index.php|assets|uploads|fav.ico)"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/(.*)$ /index.php/$1 last;
}

この:

location /$ {
index       index.php;
# Removes index.php from URLs
rewrite_log on;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}

しかし、どれも動作しません:(。私は何を間違っていますか?

ありがとうございました。

回答:

回答№1は0

このコードを翻訳してみてください。

RewriteBase /
RewriteRule ^(index.php|assets|uploads|fav.ico) - [L]
RewriteRule ^(.*)$ index.php/$1 [L]

あなたが持っている問題は、ApacheがRewriteCondの前にRewriteRuleを最初に実行するためです。 nginxコードは連続して実行されるため、読み取り時に$ 1はまだ設定されていません。

私はnginxを知りませんが、上記を翻訳すると、これはあなたが得るものだと思います:

rewrite ^/(index.php|assets|uploads|fav.ico) - last
rewrite ^/(.*)$ /index.php/$1 last;

そうでなければ

rewrite ^/(index.php|assets|uploads|fav.ico).*$ $0 last
rewrite ^/(.*)$ /index.php/$1 last;