За последние 24 часа нас посетили 62907 программистов и 1743 робота. Сейчас ищет 951 программист ...

Редирект в .htaccess

Тема в разделе "PHP для новичков", создана пользователем viphost, 17 дек 2012.

  1. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Интересно есть ли возможность склеить урлы через .htaccess такого вида
    Код (Text):
    1. /категория/Проверка/
    сделать редирект на
    Код (Text):
    1. /категория/проверка/
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    PHP:
    Код (PHP):
    1. if($_SERVER['REQUEST_URI'] != strtolower($_SERVER['REQUEST_URI'])){
    2.    header('Location: http://'.$_SERVER['HTTP_HOST'].strtolower($_SERVER['REQUEST_URI']), true, 301);
    3. } 
    Не проверял, должно сработать.
     
  3. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    с кириллицей не пашет
    и так тоже
    Код (Text):
    1. if($_SERVER['REQUEST_URI'] != mb_strtolower($_SERVER['REQUEST_URI'], 'UTF-8')){
    2.    header('Location: http://'.$_SERVER['HTTP_HOST'].mb_strtolower($_SERVER['REQUEST_URI'], 'UTF-8'), true, 301);
    3. }
    А с помощью htaccess никак?
     
  4. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Ой, я совсем забыл про urldecode и mb_*.

    Рабочий вариант:
    Код (PHP):
    1. $request_lower = mb_strtolower(urldecode($_SERVER['REQUEST_URI']), 'UTF-8');
    2. if(urldecode($_SERVER['REQUEST_URI']) != $request_lower){
    3.    header('Location: http://'.$_SERVER['HTTP_HOST'].$request_lower, true, 301);
    4. } 
    p.s у меня старый вариант который я проверял на нерабочей версии заработал только после очистки кэша. Видимо редирект с кодом 301 браузер Chrome запоминает.
     
  5. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    да этот работает вариант рабочий, но все же хотелось бы выполнить в хтачессе
    но на крайней случай если нет решение то и этот пойдет.
    спс =)