кириллический домен: как сделать редирект?

Discussion in 'PHP' started by fbidesign, 11 Jun 2010.

  1. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    72
    Likes Received:
    12
    Reputations:
    0
    Добрый день
    проблема такая. Делаю редирект со своего сайта на кириллический домен
    (например, Президент.рф)
    PHP:
    header("Location: http://президент.рф");
    (передается кириллицей в простом текстовом виде), приходит в браузер в нем же без изменений.

    Опера выдает ошибку "Неверный URL-адрес"
    Firefox поступает аналогично.

    Подскажите в чем проблема
    (т.е. какого черта они преобразуют в urlencode и как от этого избавиться)
    Версии браузеров свежие т.е. если я ввожу кириллический домен в строку адреса он открывается нормально
     
  2. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    днс не поддерживает кирилицу. по этому существует ascii аналог .xn--p1ai

    например: президент.xn--p1ai

    ну тогда пиши так xn--d1abbgf6aiiy.xn--p1ai
     
    #2 BrainDeaD, 11 Jun 2010
    Last edited: 11 Jun 2010
  3. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    72
    Likes Received:
    12
    Reputations:
    0
    до днс дело тут не доходит
    веб браузер переизвращает переданный ему адрес
     
  4. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    пробуй редиректить на http://xn--d1abbgf6aiiy.xn--p1ai/ (призедент.рф)
     
  5. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    72
    Likes Received:
    12
    Reputations:
    0
    а как написать конвертер произвольного кириллического адреса в этот вид?
     
  6. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    PHP-класс: http://phlymail.com/en/downloads/idna/download/

    пример работы: http://idnaconv.phlymail.de/?lang=en
     
  7. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    72
    Likes Received:
    12
    Reputations:
    0
    спс за линк.
    то ли класс глючный то ли хостинг...
    вообщем в example при скармливании адреса через веб форму все работает.
    Если задаю адрес в php-коде (присваиваю переменной)
    PHP:
    $_REQUEST['decoded']="http://президент.рф";
    перед if (isset($_REQUEST['encode'])) равно как если брать адрес из БД или еще откуда

    то выдает
    т.е. матерится на первую русскую букву "п".
     
    #7 fbidesign, 11 Jun 2010
    Last edited: 11 Jun 2010
  8. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Ключевое слово в ошибке выделено красным
     
  9. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    72
    Likes Received:
    12
    Reputations:
    0
    Добавил $row=utf8_encode($row[url]); На выходе...пребразование приводит к исходному результату
     
    #9 fbidesign, 16 Jun 2010
    Last edited: 16 Jun 2010
  10. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Че-то вы совсем не то делаете
    Юзайте iconv()

    PS. PHP 5.3.0
    Code:
    http://ru2.php.net/manual/en/function.idn-to-ascii.php
    http://ru2.php.net/manual/en/function.idn-to-utf8.php
    
     
    #10 krypt3r, 17 Jun 2010
    Last edited: 17 Jun 2010
  11. Dr1ver

    Dr1ver Elder - Старейшина

    Joined:
    20 Aug 2008
    Messages:
    83
    Likes Received:
    80
    Reputations:
    14
    Попробуй метатегом из html
     
  12. fbidesign

    fbidesign Member

    Joined:
    13 Jul 2008
    Messages:
    72
    Likes Received:
    12
    Reputations:
    0
    iconv() действительно помогло. спасибо

    метатегом не подходит, надо было именно хедером.