Я несколько недель пытался преобразовать правила перезаписи из .htaccess в nginx rewrite.
Исходный файл выглядел так:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L]
Конвертировано
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if (!-d $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite /.* /index.php?/$0 last;
}
Но когда я перезапускаю nginx Получаю:
nginx: [emerg] неизвестная переменная "0"
nginx: файл конфигурации /usr/local/nginx-1.8/conf/nginx.conf Ошибка теста
Автоматические преобразователи, такие , этот могут дать вам неплохое начало ...
# nginx configuration
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?/$0 break;
}
}
Конечно если
- зло, поэтому это руководство по преобразованию Директивы mod_rewrite дают еще лучший вариант
location / {
try_files $uri $uri/ /index.php?$args;
}