.htacces и mod_rewrite (mod_proxy)

Jaranero

Новичок
.htacces и mod_rewrite (mod_proxy)

ОС Windows XP Pro SP3. Раньше работал с Денвером. Сейчас установил Апач+ПХП (т.к. в Денвере нету mod_proxy, а из-за этого я целую неделю не мог понять причину неправильной работы скриптов).

Так вот:
1. Установил Апач (2.2.13) + ПХП (5.2.10).
2. Настроил: добавил 3 виртуальных хоста (в hosts тоже).
3. Протестировал, все хосты работают.
3. Подключил mod_rewrite и mod_proxy и mod_proxy_http.
4. Все работает.

Итак, у меня есть локальный ресурс на другом компе в сетке, доступ к которому я получаю так: http://172.17.1.245/cgi-bin/qwe/rty. Есть мой сайт http://hello-world.

Вопрос:
Как сделать так, чтобы запросив адрес http://hello-world/asd, я получил страничку http://172.17.1.245/cgi-bin/qwe/rty со всеми ее картинками? А так же чтобы работали все ссылки (относительные) на этой страничке.

p.s. Пробую с помощью RewriteRule, но ничего не получается.... Может кто-нибудь написать рабочий пример?

p.p.s. Написал сюда, так как это никак не относится к настройке Апача и возможно нереализуемо, поэтому хотелось бы узнать есть ли возможность проделать то же самое при помощи PHP-скрипта?
 

Фанат

oncle terrible
Команда форума
mod_rewrite оперирует внутренними запросами сервера. если он перенаправит БРАУЗЕР на хост 172.17.1.245, то браузер будет обращаться к хосту 172.17.1.245
 

Jaranero

Новичок
Да, но модуль mod_proxy дает возможность скрыть от пользователя источник, из которого грузится твоя страница.

Пример:

-~{}~ 19.08.09 10:43:

RewriteEngine On
RewriteRule (.*) http://172.17.1.245/cgi-bin/qwe/rty [P]

это на мой взгляд должно отображать в любой директории сайта и для любого его файла (не существующего так же) отображать страничку по адресу http://172.17.1.245/cgi-bin/qwe/rty.

Но меня такой вариант не устраивает, мне нужно чтобы и картинки грузились откуда надо (а не код указанной странички) и чтобы ссылки работали (тоже относительно).

-~{}~ 19.08.09 10:44:

p.s. Сам браузер в этом случае даже не подозревает, что запрос перенаправлен.
 

iceman

говнокодер
создать папку asd и кинуть туда .htaccess фаил с

RewriteEngine On
RewriteRule (.*) http://172.17.1.245/cgi-bin/qwe/rty [P]
 

Jaranero

Новичок
Не годится. Хотя все правильно загрузится, но допустим таблица стилей, записанная в хтмл-ке так:

<LINK rel="stylesheet" type="text/css" href="/style2.css">

будет снова загружена с корневого каталога, где ее нет, а эти запросы должны как-то обнаруживаться и подгружаться с иного места... :(

Как это сделать? У меня нет идей... Помогите!
 

Jaranero

Новичок
Автор оригинала: iceman
Jaranero
(.*) <--> вот это видишь? это регулярное выражение, напиши нужное

(\w+\.(js|css|jpg|gif|png|ico))$ http://172.17.1.245/$1 [P]
Спасибо! Более или менее, но разбираюсь теперь :) Файл .htaccess лежит в корневой папке сайта и выглядит так:

RewriteEngine On
RewriteRule asd http://172.17.1.245/cgi-bin/cgi-bin/qwe/rty [P]
RewriteRule (\w+\.(js|css|jpg|gif|png|ico)) http://172.17.1.245/$1 [P]

Теперь главная страничка внутреннего сайта загружается вместе со стилями (/style.css и /script.js). На самой страничке находится форма (action="/cgi-bin/qwe/rty") с кнопкой типа submit.

Так вот, когда я нажимаю эту кнопку, то на сервер приходит запрос "POST /cgi-bin/qwe/rty HTTP/1.1". И видимо он не перенаправляется... Как перенаправить его? Или может файл .htaccess надо поместить в другую директорию?

-~{}~ 21.08.09 16:11:

У меня все получилось!
Файл .htaccess я положил в директорию выше чем www и cgi-bin. Вот его содержание:

RewriteEngine On
RewriteRule (style\.js|script\.css) http://172.17.1.245/$1 [P,L]
RewriteRule cgi-bin(.+) http://172.17.1.245/cgi-bin/$1 [P]

Вот и все :) Во всяком случае этого оказалось достаточно, чтобы сделать корректное перенаправление в моем случае.
 
Сверху