WWW к Перенаправлению не-WWW с PHP

Я хочу перенаправить все запросы www.domain.com на domain.com с PHP в основном:

if (substr($_SERVER['SERVER_NAME'], 0, 4) === 'www.')
{
    header('Location: http://' . substr($_SERVER['SERVER_NAME'], 4)); exit();
}

Однако я действительно хочу поддержать требуемый URL как в Так, для, например:

http://www.stackoverflow.com/questions/tagged/php?foo=bar

Должен перенаправить к:

http://stackoverflow.com/questions/tagged/php?foo=bar

Я не хочу полагаться .htaccess решения, и я не уверен который $_SERVER Вар я должен был бы использовать, чтобы заставить это произойти. Кроме того, сохранение протокола HTTPS было бы плюс.

Как я должен сделать это?

22
задан Alix Axel 17 January 2010 в 00:04
поделиться

2 ответа

UIScrollView является всего лишь подклассом UIView, что позволяет добавлять и удалять подчиненные виды во время выполнения. Если у вас есть фотографии фиксированной ширины (320px) и их 300, то ваш основной вид будет 300 * 320 пикселей в ширину. При создании вида прокрутки инициализируйте рамку таким образом, чтобы она была такой широкой.

Таким образом, рамка вида прокрутки будет иметь размеры (0, 0) - (96000, 480). При добавлении подчиненного вида необходимо изменить его рамку так, чтобы он помещался в правильное положение на родительском виде.

Итак, мы добавляем 4-ю фотографию к виду прокрутки. Это будет от (960, 480) до (1280, 480). Это легко вычислить, если можно каким-то образом связать индекс с каждой картиной. Затем используйте его для вычисления кадра картины, где индексы начинаются с 0:

Top-Left -- (320 * (index - 1), 0)

до

Bottom-Right -- (320 * index, 480)

Удаление первого изображения/подвида должно быть простым. Сохранение массива из 3 подчиненных представлений на экране. Каждый раз, когда вы добавляете новый подчиненный вид на экран, также добавляйте его в конец этого массива, а затем удаляйте первый подчиненный вид в этом массиве с экрана.

-121--3502279-

SVG - это способ 2D:)

Если скорость рисования является проблемой, вам придется быть осторожными в том, насколько сложны ваши файлы - и обратите внимание, что SVG не оптимизирован для скорости анализа, так что вы можете понести значительный штраф времени запуска во время загрузки моделей.

-121--3126690-
$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80")
{
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} 
else 
{
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
header('Location: '. $pageURL);

Перенаправляет пользователя на ту же страницу, www. нетронутый.

Итак, чтобы избавиться от www., мы просто заменим одну строку:

$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80")
{
    $pageURL .= substr($_SERVER['SERVER_NAME'], 4).":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} 
else 
{
    $pageURL .= substr($_SERVER['SERVER_NAME'], 4).$_SERVER["REQUEST_URI"];
}
return $pageURL;

И это должно работать.

По пути, это метод, который рекомендуется Google, так как он сохраняет https :// нетронутыми, наряду с портами и, например, если вы используете их.


Как отметил Гумбо, он использует $ _ SERVER ['HTTP _ HOST'] , так как он исходит из заголовков вместо сервера, таким образом $ _ SERVER ['SERVER _ *'] не так надежен. Можно заменить $ _ SERVER ['SERVER _ NAME'] на $ _ SERVER ['HTTP _ HOST'] , и он должен работать в том же пути.

12
ответ дан 29 November 2019 в 04:12
поделиться

Попробуйте следующее:

if (substr($_SERVER['HTTP_HOST'], 0, 4) === 'www.') {
    header('Location: http'.(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 's':'').'://' . substr($_SERVER['HTTP_HOST'], 4).$_SERVER['REQUEST_URI']);
    exit;
}
38
ответ дан 29 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: