Назад | Перейти на главную страницу

Переход с apache на nginx - проблема с mod_rewrite

Я только что переключил свой сервер с apache2 на nginx, и теперь у меня возникли проблемы с перезаписью .htaccess.

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Я понял, что для того, чтобы эта работа работала на Nginx, мне нужно будет отредактировать блок сервера Nginx. Сможет ли кто-нибудь сказать мне, как? Заранее большое спасибо.

Вы можете сделать что-то подобное с помощью try_files:

location (.*) {
  try_files $uri $uri/ /index.php;
}

иначе вы можете использовать конвертер .htaccess в nginx http://winginx.com/en/htaccess, но поскольку это автоматизированный процесс, он не будет оптимизирован:

location / {
rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
}