Доступ к сайту без «www.» аналог в браузере,
как в «site.com», по-прежнему будет отображаться «www.site.com» из $ _SERVER [ ‘SERVER_NAME’];
Это может показаться не таким уж большим делом, просто определите это на внешнем интерфейсе при совершении Ajax-вызовов, используя что-то вроде location.href, право?
Или просто удалите «www.» от SERVER_NAME. Хорошее решение, но не решает основную проблему. Теперь код PHP должен опираться на JavaScript? Разве бэк-энд не должен быть в состоянии определить адрес да-www против адреса no-www?
Кроме того, когда у вас есть <form action = «URL»>, не говоря уже о том, что PHP генерирует код, который должен вызывать сервер, решение, использующее $ _SERVER [‘SERVER_NAME’], приведет к ошибкам междоменной безопасности.
Так — вопрос в том — Есть ли способ в PHP автоматически определить, есть ли www. часть была или не была введена в адресную строку браузера как часть имени домена?
Проблема в том, что теперь у вас есть серверный PHP-код, основанный на JavaScript, который иногда может быть отключен в браузере. И это просто звучит как неуклюжая практика.
Да, это вполне возможно.
<?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
}
?>
Заставить www отредактировать .htaccess
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
тогда каждый запрос всегда будет иметь www или использовать аналогичный метод для удаления www