Помогите разобраться в mod_rewrite
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- рядовой
- Сообщения: 26
- Зарегистрирован: 2009-05-03 15:32:48
Помогите разобраться в mod_rewrite
Исходные данные:
FreeBSD 7.2-RELEASE
Apache 2.2.11
В локальной сети находится веб-сервер на котором крутится сайт доступный для интернета по адресу xxxxxx.ru. Пользователи локальной сети заходят на этот сайт по адресу 10.10.10.10. Но не могут по нему нормально передвигаться т.к. на сайте есть абсолютные ссылки тип xxxxxx.ru\razdel\index.php. Поэтому хотелось бы сделать так, чтобы если пользователь локальной сети нажимает подобную ссылку, то xxxxxx.ru автоматически бы заменялось на 10.10.10.10. Возможно ли такое с помощью mod_rewrite?
FreeBSD 7.2-RELEASE
Apache 2.2.11
В локальной сети находится веб-сервер на котором крутится сайт доступный для интернета по адресу xxxxxx.ru. Пользователи локальной сети заходят на этот сайт по адресу 10.10.10.10. Но не могут по нему нормально передвигаться т.к. на сайте есть абсолютные ссылки тип xxxxxx.ru\razdel\index.php. Поэтому хотелось бы сделать так, чтобы если пользователь локальной сети нажимает подобную ссылку, то xxxxxx.ru автоматически бы заменялось на 10.10.10.10. Возможно ли такое с помощью mod_rewrite?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Помогите разобраться в mod_rewrite
это делается проще - для локальный зоны адерс xxxxxx.ru резолвится как 10.10.10.10 и никаких проблем нет. Делается это через настройку ДНС. Через мод_реврайт я бы не стал рисковать, хотя в теории можно.ved00n писал(а):Возможно ли такое с помощью mod_rewrite?
а вообще как сеть пострена, локальные пользователи через шлюз ходят?
-
- рядовой
- Сообщения: 26
- Зарегистрирован: 2009-05-03 15:32:48
Re: Помогите разобраться в mod_rewrite
Вся закавыка в том, что сеть домашняя, "полудикая". Единого внутреннего DNS нет. Единого шлюза так же нет, каждый прописывает тот шлюз который ему удобен или его нет вовсе. Компьютеры объеденены в сеть класса B.
Вот такая ситуация.
Вот такая ситуация.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Помогите разобраться в mod_rewrite
тогда надо поднять или пускай hosts прописывают. Я так понимаю, что тут просто деньги завязаны на основе ip. Если да, то просто надо повесить инструкцию, мол чтобы трафик был локальным выполните под виндойved00n писал(а):Единого внутреннего DNS нет.
Код: Выделить всё
notepad %systemroot%\system32\drivers\etc\hosts
Код: Выделить всё
10.10.10.10 хххххх.ru
если уж хочется на mod_rewrite извратиться, тогда сюда http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
ну и примерно так должно выглять
Код: Выделить всё
RewriteCond %{REMOTE_ADDR} ^10.10.10.* [OR]
RewriteCond %{REMOTE_ADDR} ^xxx.xxx.xxx.*
RewriteRule имя_домена.ru http://10.10.10.10/?%{QUERY_STRING} [L,R]
-
- рядовой
- Сообщения: 26
- Зарегистрирован: 2009-05-03 15:32:48
Re: Помогите разобраться в mod_rewrite
Нет, деньги здесь не причем. Суть в том, что у части пользователей локальной сети интернета нет в принципе, поэтому они не могут нормально работать с сайтом.
За пример mod_rewrite спасибо, буду пробовать.
За пример mod_rewrite спасибо, буду пробовать.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Помогите разобраться в mod_rewrite
но суть однако с hosts не меняется.ved00n писал(а):Суть в том, что у части пользователей локальной сети интернета нет в принципе, поэтому они не могут нормально работать с сайтом.
он кстати всё равно не будет работать. Ведь, если клиент не занет адреса домена, то и на сервак не попадёт, а значит и реврайт не сработает.ved00n писал(а):За пример mod_rewrite спасибо, буду пробовать.
Поэтому тут либо html фильтровать либо домен резолвить локально.
-
- рядовой
- Сообщения: 26
- Зарегистрирован: 2009-05-03 15:32:48
Re: Помогите разобраться в mod_rewrite
Не утишительно.
А что значит "html фильтровать"?
А что значит "html фильтровать"?
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Помогите разобраться в mod_rewrite
весь исходящий html-код пропускать через фильтр, который на основе адреса посетителя будет заменять http://домен.ru на http://10.10.10.10 к примеру. Если сайт написан на php, то делается это легко и просто через функцию ob_start().ved00n писал(а):А что значит "html фильтровать"?
-
- рядовой
- Сообщения: 26
- Зарегистрирован: 2009-05-03 15:32:48
Re: Помогите разобраться в mod_rewrite
Буду разбираться с этим вариантом. Если есть ссылка на толковое разъяснение - буду благодарен.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Помогите разобраться в mod_rewrite
http://ru2.php.net/manual/ru/function.ob-start.php там же и пример естьved00n писал(а):Если есть ссылка на толковое разъяснение - буду благодарен.
Код: Выделить всё
<?php
function callback($buffer)
{
// replace all the apples with oranges
return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();
?>
-
- рядовой
- Сообщения: 26
- Зарегистрирован: 2009-05-03 15:32:48
Re: Помогите разобраться в mod_rewrite
Всё отлично! Вставил вот такой скрипт:
Большое Спасибо за помощь!
Код: Выделить всё
<?php
function net_match ( $network , $ip ) {
$ip_arr = explode ( '/' , $network );
$network_long = ip2long ( $ip_arr [ 0 ]);
$x = ip2long ( $ip_arr [ 1 ]);
$mask = long2ip ( $x ) == $ip_arr [ 1 ] ? $x : 0xffffffff << ( 32 - $ip_arr [ 1 ]);
$ip_long = ip2long ( $ip );
// echo ">".$ip_arr[1]."> ".decbin($mask)."\n";
return ( $ip_long & $mask ) == ( $network_long & $mask );
}
//Если IP пользователя не входит в диапазон локальной сети, то всё остается без изменений.
if(net_match ( '10.0.0.0/8' , $_SERVER['REMOTE_ADDR'] )){
function callback($buffer)
{
return (str_replace("xxxxxx.ru", "10.10.10.10", $buffer));
}
ob_start("callback");
}
?>
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Помогите разобраться в mod_rewrite
ну гуд, что всё получилось
кстати, если интересно, http://anton-pribora.ru/articles/php/php-net-mask/
кстати, если интересно, http://anton-pribora.ru/articles/php/php-net-mask/