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

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем verfaa, 10 мар 2013.

  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    374
    Симпатии:
    41
    Всем привет.

    Есть в конфиге nginx код, который редиректит с Перейти по ссылке

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

    lordBlack

    Регистр.:
    29 ноя 2007
    Сообщения:
    620
    Симпатии:
    246
    Код:
    # 301 redirect from site.ru/index.php to /
    if ( $request_uri ~ "site.ru/index.(php|html?)" ) {
    rewrite ^ /$1 permanent;
    } 
    Типа того не?
     
  3. verfaa

    verfaa

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

    unkn0wn

    Регистр.:
    22 дек 2006
    Сообщения:
    164
    Симпатии:
    86
    не юзайте if, юзайте location

    Код:
    location ~ ^/index.(php|html)$ {
    rewrite http://site.ru/ last;
    } 
     
  5. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    374
    Симпатии:
    41
    А чем так плох if? Конструкции с ним прекрасно работают
     
  6. unkn0wn

    unkn0wn

    Регистр.:
    22 дек 2006
    Сообщения:
    164
    Симпатии:
    86
    да он не плох, if удобен и полезен, если необходимо проанализировать какую-то переменную, но если есть возможность использовать location+regex, map, try_files, etc, то лучше использовать их - попытки покодить в конфиге зачастую приводят к феереичным недиагностируемым багам из-за того, что if нарушает привычный обход конфига nginx-ом. почитайте Перейти по ссылке по работе if.