私は.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;