Помогите настроить правило nginx

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
417
Реакции
49
Всем привет.

Есть в конфиге nginx код, который редиректит с Для просмотра ссылки Войди или Зарегистрируйся на Для просмотра ссылки Войди или Зарегистрируйся

Код:
# 301 redirect from /index.php to /
if ( $request_uri ~ "/index.(php|html?)" ) {
rewrite ^ /$1 permanent;
}

Работает нормально, но возникла необходимость установить phpmyadmin, поэтому создал в корне сайта папку phpmyadmin и залил туда файлы. Проблема в том, что при попытке зайти на Для просмотра ссылки Войди или Зарегистрируйся меня редиректит на Для просмотра ссылки Войди или Зарегистрируйся
Как тут быть? Как в конфиге написать правило только для index.php, который находится в корне сайта? И чтобы на файлы index.php в других папках это правило не касалось бы?
 
Код:
# 301 redirect from site.ru/index.php to /
if ( $request_uri ~ "site.ru/index.(php|html?)" ) {
rewrite ^ /$1 permanent;
}

Типа того не?
 
Скорее всего нет, т.к правило планируется общее для нескольких сайтов, поэтому если подставить site.ru, это уже создаст неудобства.
Нужно правило что-то типа такого:
Код:
if ( $request_uri ~ "(если здесь нет вложенных папок)/index.(php|html?)" ) {
rewrite ^ /$1 permanent;
}
 
не юзайте if, юзайте location

Код:
location ~ ^/index.(php|html)$ {
rewrite http://site.ru/ last;
}
 
А чем так плох if? Конструкции с ним прекрасно работают
 
да он не плох, if удобен и полезен, если необходимо проанализировать какую-то переменную, но если есть возможность использовать location+regex, map, try_files, etc, то лучше использовать их - попытки покодить в конфиге зачастую приводят к феереичным недиагностируемым багам из-за того, что if нарушает привычный обход конфига nginx-ом. почитайте Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся и небольшое Для просмотра ссылки Войди или Зарегистрируйся по работе if.
 
Назад
Сверху