.htaccess to nginx.conf Переписать правила - PullRequest
0 голосов
/ 23 декабря 2011

Я переключаюсь с .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 голосов
/ 23 декабря 2011

Попробуйте перевести этот фрагмент кода.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...