2016-08-23 2 views
0

Доступ к сайту без "www." в браузере,Можно ли определить, «www». был введен как часть URL-адреса в адресную строку только с PHP?

как на сайте «site.com», по-прежнему будет отвечать «www.site.com» от $ _SERVER ['SERVER_NAME'];

Это может показаться не большое дело, просто определить это на переднем конце, делая ваши Ajax звонки, используя что-то вроде location.href, верно?

Или просто удалите "www." от SERVER_NAME. Хорошее решение, но не затрагивает основной вопрос. Теперь PHP-код должен опираться на JavaScript? Должна ли контртеррористическая организация определять адрес yes-www vs no-www?

Кроме того, если у вас есть < форма действия = «URL»>, не говоря уже о PHP, что генерирует код, который должен совершать звонки на сервер, то решение, которое использует $ _SERVER [ «SERVER_NAME»] будет производить кросс-домен ошибки безопасности.

So - вопрос - есть ли способ в PHP, чтобы автоматически определять, есть ли www. часть была или не была введена в адресную строку браузера как часть имени домена?

Проблема в том, что теперь у вас есть серверный PHP-код, основанный на JavaScript, который иногда может быть отключен в браузере. И это, как правило, звучит как неудобная практика.

+0

Возможно, ваш веб-сервер должен переводить запросы без 'www.' в те, у которых есть' '' (или наоборот), поэтому с этой точки зрения все должно обслуживаться в одном домене. –

+0

Принуждение переписать с не-www на www. пользователи скажут: «Но http: // example.com - это мудрый путь!» – InfiniteStack

+0

Так переписывайте в другую сторону. И для записи «google.com» отправляет вас на «www.google.com». Я с удовольствием сделаю все, что делает Google. –

ответ

0

Чтобы заставить WWW редактировать .htaccess

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

то каждый запрос всегда будет иметь WWW или использовать подобный метод для удаления WWW

1

Да, это вполне возможно.

<?php 
    //Will be true if www. exists, and false if not. 

    $host_has_www = (strpos($_SERVER['HTTP_HOST'], 'www.') !== false) ? true : false; 

    if ($host_has_www == true) { 
     //Do something 
    } 

?> 
+2

Это также даст true, если имя хоста будет просто _include_ 'www.', Например. 'Subdomain.www.anothersubdomain.site.com'. Вы должны проверить позицию как 'strpos (...) === 0', или, мои предпочтения,' substr ($ host, 0,4) === 'www.'' –

+0

Это правда, я действительно сделал ошибка при задании вопроса:/HTTP_HOST точно отражает www. часть в каждом случае. Я, случайно, смотрел на кэшированную страницу, которая была кэширована из домена www-present. – InfiniteStack

Смежные вопросы