Преминавам от .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;
}
}
но нищо не работи :(. Какво правя погрешно?
Благодаря ти.
Отговори:
0 за отговор № 1Опитайте да преведете този код.
RewriteBase /
RewriteRule ^(index.php|assets|uploads|fav.ico) - [L]
RewriteRule ^(.*)$ index.php/$1 [L]
Проблемът, който имате, е, че Apache първо изпълнява RewriteRule, преди RewriteCond. Вашият 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;