Проверить имя ресурса http запросе

12 3
MiladyX
На сайте с 23.09.2008
Offline
65
1113

Ситуация такая. Есть сервер, у него 1 ип адрес. Вводя этот ип адрес в браузер, открывается сайт. Нужно сделать проверку имени ресурса в хттп запросе, т.е. если в запросе передаётся адрес site сайт открывается, если что то другое (в т.ч. и ИП адрес) то нет. Помогите плиз, с помощься .htaccess или ещё как, пробовали так в самом скрипте написать:

$parts = $_SERVER["HTTP_HOST"];
$var = strpos($parts,"site");
if ($var==0)
{
die;
}

Но это решение какое то кривое, без ввв не работает сайт и т.д.

Помогите плиз.

T.R.O.N
На сайте с 18.05.2004
Offline
314
#1

MiladyX,

вообще-то такие вещи в настройках сервера делаются...

но если хочется с htaccess

RewriteCond %{HTTP_HOST} !^(.*)\.site\.ru [NC]

RewriteRule ^(.*)$ http://site.ru$1 [L,R=301]

как-то так

если введено не *.site.ru будет редирект на site.ru

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
MiladyX
На сайте с 23.09.2008
Offline
65
#2

Большое спасибо, но вопрос, если мне надо проверить имя ресурса без домена? Просто имя - site, т.к. доменов большое количество имеется (site.ru, site.com, site.de и т.д.) и все они в одном месте :)

T.R.O.N:
MiladyX,
!^(.*)\.site\.ru
T.R.O.N
На сайте с 18.05.2004
Offline
314
#3

!^(.*)\.site\.(ru|com|de)

кажется должно работать

MiladyX
На сайте с 23.09.2008
Offline
65
#4

T.R.O.N, Спасибо большое ещё раз :)

p.s. Ну а всё же, можеть есть решение без указания доменов? Может доменов 200, 300 штук быть, которые закреплены за одним ип адресом. все перечислять чтоли? :)

T.R.O.N
На сайте с 18.05.2004
Offline
314
#5

MiladyX,

какая цель?

Если Вы хотите чтобы для каждого открывался свой сайт или чтобы открывался один и тот-же?

Если для каждого свой, то нужно настроить сервак, он сам все сделает.

AlikZP
На сайте с 22.11.2009
Offline
107
#6

Если хотите средствами PHP, то нужно писать так:

if (stripos($_SERVER['HTTP_HOST'], 'site') === false) {

die();
}

Обязательно три знака равенства.

Но такой вариант пропустит доступ с адреса mysite.com, например. siteforall.ru тоже пройдет

Website CMS: быстрая, удобная, недорогая! Вечная лицензия за 45$ (/ru/forum/524503) Яся - быстрый поиск фото для товаров. OpenCart/ocStore. Дополнение. (/ru/forum/665287) Грамотная верстка ваших макетов (/ru/forum/comment/8853216)
MiladyX
На сайте с 23.09.2008
Offline
65
#7
T.R.O.N:
MiladyX,
какая цель?
Если Вы хотите чтобы для каждого открывался свой сайт или чтобы открывался один и тот-же?
Если для каждого свой, то нужно настроить сервак, он сам все сделает.

Цель такова: В хттп запросе, который приходит на сервер может прийти что угодно (я имею в виду имя ресурса), мне надо показать сайт только для моего имени, доменов может быть большое количество, site.com,ru,de,org,net ...оч много. У всех этих доменов общее имя (site) если оно есть в хттп запросе, сайт показывается (один для всех доменов, скрипт уже сам для конкретного юзера отдаёт нужный ему домен, в зависимости от ип юзера). Вот.

AlikZP
На сайте с 22.11.2009
Offline
107
#8

Вот еще PHP вариант, более удобный

$url = explode('.', $_SERVER['HTTP_HOST']);

$site = ($url[0] == 'www') ? $url[1] : $url[0];

В переменную $site пишется имя вашего сайта. Та его часть, которая идет сразу после www или которая первая, если www в адресе нет.

То есть если посетитель зашел по адресу www.site.ru или site.ru в переменной $site будет значение 'site'

А дальше делайте с ним что угодно

MiladyX
На сайте с 23.09.2008
Offline
65
#9

AlikZP, Большое спасибо, возможно приму к сведению такой вариант :)....Ну а если придёт www.site.com.ru, в переменной site так и будет "site" ?

AlikZP
На сайте с 22.11.2009
Offline
107
#10
MiladyX:
Ну а если придёт www.site.com.ru, в переменной site так и будет "site" ?

Да. Но если прийдет subdomain.site.com.ru то в переменной будет 'subdomain'

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий