Перейти к содержимому



Header ("Location: $url")

#1 Дилетант

Дилетант
  • Пользователь
  • 53 сообщений
  • Репутация: 0
0

Отправлено 14 Февраль 2011 - 13:54

Здравствуйте, уважаемые специалисты.

Есть модуль, описание здесь http://www.masterweb...?showtopic=7997

Не открываются сайты зоны .рф Пример:

http://www.mysite.ru...://президент.рф

Текст go.php
<?php
$url =  isset($_GET['url']) ? $_SERVER['QUERY_STRING'] : 'index.php';
if($url != 'index.php') $url = substr($url, 4);
if ($url) { header ("Location: $url"); }
?>

Прошу помочь дилетанту.

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 14 Февраль 2011 - 21:35

Дилетант, по этой причине используем на форуме meta refresh. Дополнительно приходится выполнять преобразования закодированных символов при передаче в GET-запросе обратно в кириллицу:
<?php

$url = substr($_SERVER['QUERY_STRING'], 4); // получаем ссылку
$url = explode("/", $url); // разбиваем ссылку по слешу
$url[2] = rawurldecode($url[2]); // это у нас домен, декодируем русские символы
$url = implode("/",$url); // соединяем обратно

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="0;<?php echo $url?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Перенаправление</title>
</head>
<body>
</body>
</html>

Но скажу сразу, данный способ перенаправления съедает якоря из ссылок. Пробовал через заголовки location этот же метод, не прокатывает. Он обратно кодирует русские символы.
  • 0

#3 Дилетант

Дилетант
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

Отправлено 16 Февраль 2011 - 12:30

ZiTosS, мне только нужно вот что, если в домене есть .рф, то декодируем, иначе все как обычно.

УРЛ будет только типа президент.рф, иванов.рф, налог.рф и т.д.

Т.е.
<?php
$url =  isset($_GET['url']) ? $_SERVER['QUERY_STRING'] : 'index.php';
if($url != 'index.php') $url = substr($url, 4);

Если в УРЛ есть рф, то декодируем.

if ($url) { header ("Location: $url"); }
?>

  • 0

#4 Дилетант

Дилетант
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

Отправлено 16 Февраль 2011 - 20:01

Дилетант спасибо!

За что?

ZiTosS , напиши, пожалуйста код, для:

Если в УРЛ есть рф, то декодируем.
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Февраль 2011 - 17:07

Дилетант, хех, в том-то вся и беда, что проверить наличие чисто .рф нельзя, все русские символы преобразуются в 16-тиричное представление формата %XX. Конечно можно сравнить по ASCII, но зачем?

Функция rawurldecode (urldecode) - декодирует строку, т.е. заменяет все спецсимволы в URL и все %XX обратно на их реальные значения. Т.о. функция никоим образом не затронет домены на английском. Чем вас этот вариант не устраивает?
  • 0

#6 Дилетант

Дилетант
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

Отправлено 17 Февраль 2011 - 17:32

ZiTosS, так как у меня будет выглядеть мой скрипт GO.php, который приведен в первом посте,

чтобы президент.рф открывался?
  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Февраль 2011 - 18:21

Я же вам написал всё, файл go.php вида здесь:
http://www.masterweb...&...ost&p=53507

Только оговорился, что перенаправление с meta refresh съедает якоря, то есть:
http://site.ru/file.html#anchor - было
http://site.ru/file.html - стало
В остальном скрипт работает.
  • 0

#8 Дилетант

Дилетант
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

Отправлено 18 Февраль 2011 - 11:50

Только оговорился, что перенаправление с meta refresh съедает якоря ...

А через Location никак не сделать? Мне якоря нужны.

А вот ссылки с .рф это уже экзотика. Значит не судьба. Буду пользовать старый скрипт с Location.

Спасибо, ZiTosS, за помощь.

Может как-то всё-таки через Location получиться. Если нет, то закрывайте тему.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru