/ / .htaccess към nginx.conf Пренаписване на правила - apache, .htaccess, nginx

.htaccess към 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;
}
}

но нищо не работи :(. Какво правя погрешно?

Благодаря ти.

Отговори:

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;