[Решено] Nginx, 301 redirect со страниц со слэшем на страницы без слэша в конце URL

Тема в разделе "Администрирование серверов", создана пользователем lehatyapachkin, 14 июн 2018.

Статус темы:
Закрыта.
  1. lehatyapachkin

    lehatyapachkin

    Регистрация:
    13 июн 2018
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте, на локальном сервере nginx который на ubuntu пытаюсь приблизится к реальным условиям. и с этим redirect-ом вот какая непонятка. убирать всегда или добавлять всегда слэш в конце url? чтобы не было дублирования страниц. много искал, но натыкался на .htaccess для apache где пишут убирать всегда, кроме директорий. но на практике не могу это реализовать в конфиге nginx. пробовал вот так
    server {rewrite ^/(.*)/$ /$1 permanent;}
    когда на конце url файл, то еще норм убирает если www.site.local/?bla=bla то слэш пропадает. но когда каталог то браузер пишет Сайт www.site.local выполнил переадресацию слишком много раз.
    Подскажите как быть в этой ситуации. Заранее благодарен.
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Нельзя редиректить всё подряд!
    В идеале, редиректить надо только для конечных страниц. То есть, например, если есть интернет-магазин: на страницах категорий слеш нужен, на страницах товаров - не нужен. Но это надо делать уже средствами самого движка, только он знает, где какая страница.

    А вашу текущую проблему решит такой редирект:

    Код:
    if (!-d $request_filename){
            rewrite ^/(.*)/$ $scheme://$host/$1 permanent;
        }
    
     
  3. lehatyapachkin

    lehatyapachkin

    Регистрация:
    13 июн 2018
    Сообщения:
    6
    Симпатии:
    0
    А вашу текущую проблему решит такой редирект:

    Код:
    if (!-d $request_filename){
            rewrite ^/(.*)/$ $scheme://$host/$1 permanent;
        }
    еще раз огромное спасибо) подскажите еще )) кде почитать синтаксис как писать условие для if и вообще где примять вообще if как вот обозначение что !-d это не директоя, вашу подсказку куда писать в location или server?
     
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    в документации http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#if
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    А куда вы свой первоначальный редирект писали? Это не дополнение к нему, а правильный вариант вместо него.

    И таки пользуйтесь документацией nginx, там всё хорошо разжёвано.
     
  6. lehatyapachkin

    lehatyapachkin

    Регистрация:
    13 июн 2018
    Сообщения:
    6
    Симпатии:
    0
    я так и думал) тяжко мне там ох как тяжко, но буду стараться( все работает. Вам ОГРОМНАЯ ДУШЕВНАЯ БЛАГОДАРАЧКА!!!!!
     
    Lasted edited by : 15 июн 2018
Статус темы:
Закрыта.