2011-12-23 6 views
0

Я переключение с .htaccess на nginx.conf и у меня есть проблемы перевода этих строк для Nginx:.htaccess в nginx.conf Переписать правила

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

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

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

Проблема у вас есть, потому что апач первым выполняет 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; 
Смежные вопросы