В процессе переноса .htaccess в конфиг nginx столкнулся с проблемой:
Необходимо сделать rewrite с
example.com/a.php на
example.com/b.phplocation / {
rewrite ^/a.php$ b.php;
}
location ~ \.php$ {
fastcgi_pass localhost: 9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
Rewrite выше не перенаправляет на b.php. Почитав документацию узнал, что location с регулярным выражением приоритетнее, соответственно
example.com/a.php попадает сразу в location для обработки fcgi. Но в ступор ввело, почему отрабатывает следующий rewrite, хотя у него также меньше приоритет:
location /a.php {
rewrite ^/a.php$ b.php;
}
location ~ \.php$ {
fastcgi_pass localhost: 9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
P.S.: Поделитесь опытом как красиво прописать rewrite .php файла, чтобы он выполнялся ранее location, отвечающего за обработку fcgi.