taliban
@taliban
php программист

Nginx redirect?

Здравствуйте, все никак не могу нарыть информацию, вроде и не сложное условие, и делал раньше, но сейчас упорно не могу найти.

Мне надо написать условие для nginx чтоб при попадании на любой несуществующий файл шел редирект на index.php (с этим разобрались) но еще есть условие чтоб существующие файлы фильтровались по маске (вообще по расширению, но в идеале по регулярке, хотя на сколько я понял условия там и строятся на регулярках)

тоесть если файла нет — идем на индекс.пхп

а если файл есть но не соответствует условию /\.(jpg|gif|png)$/ то идем снова на индекс.пхп
  • Вопрос задан
  • 7920 просмотров
Решения вопроса 1
multifinger
@multifinger
if ($request_filename !~ "\.(js|htc|ico|gif|jpg|png|css)$") {
rewrite ^(.*) /index.php last;
}


оно?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
avalak
@avalak
Набросал базовый конфиг.
try_files быстрее и предпочтительнее чем rewrite.
Ответ написан
mastini
@mastini
То что сразу в голову пришло. Не совсем понятно, что Вам надо, но есть от чего отталкиваться.
location / {
root /var/www/;
index index.php;

if (-f $request_filename) {
break;
}

if (-e $request_filename)
{
break;
}

if (!-e $request_filename) {
rewrite ^(.+)$ /index.php last;
break;
}

}


или

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
if (-f $request_filename) {
break;
}

if (-e $request_filename)
{
break;
}

if (!-e $request_filename) {
rewrite ^(.+)$ /index.php last;
break;
}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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