Настройка rewrite в Nginx?

Сегодня перешел на Nginx с Apache, и столкнулся с тем, что нужно настроить rewrite, вернее перенести mod_rewrite .htaccess в nginx.

Вот мой конфиг в .htaccess:
AddDefaultCharset UTF-8
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag register_globals Off
Options -Indexes

RewriteEngine    on

RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]


Я нашел сервис, который преобразует .htaccess в nginx server, он выдал мне следующее:
charset utf-8;
location = /favicon.ico {
}
autoindex off;
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?route=$1 break;
}
}


Но это не работает, nginx выдает пустые файлы.
  • Вопрос задан
  • 8801 просмотр
Пригласить эксперта
Ответы на вопрос 1
@wostex
Попробуйте так

charset utf-8;
autoindex off;

location / {
                try_files $uri $uri/ /index.php?route=$request_uri;
        }


Если пустые файлы - может быть проблема не в nginx, а например не указан SCRIPT_FILENAME в php-fpm:

location ~ \.php$ {
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы