Мод перезаписи для перенаправления удаленного ресурса в локальную папку - PullRequest
1 голос
/ 10 марта 2012

Я бы хотел настроить свой локальный хост для перенаправления абсолютных URL-адресов из определенного субдомена на локальные пути, используя mod_rewrite следующим образом:

http://resources.website.com/img/mypic.gif

будет перенаправлять на

/Users/path-to-local-website/img/mypic.gif

чтобы мой локальный HTML мог читать

<img src="http://resources.website.com/img/mypic.gif" />

и все же обратитесь к локальному изображению.

Каким будет RewriteCond / Rule для этого? Спасибо

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Вы можете сделать это, используя mod_rewrite, если вы можете запланировать .htaccess в домене: resources.website.com.Поместите этот код в файл .htaccess в DOCUMENT_ROOT из resources.website.com:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(img/.*)$ http://localhost/$1 [R,L]

и убедитесь, что папка img/ и ее содержимое находятся в DOCUMENT_ROOT на вашем локальном хосте.

1 голос
/ 10 марта 2012

Таким образом, у вас есть веб-сайты, размещенные где-то в облаке, и их локальные копии, где вы занимаетесь разработкой. Конечно, HTML такой же.Вы загружаете это без изменений.Он содержит абсолютные ссылки на документы ваших доменов, например изображения.

При просмотре локальной копии этого веб-сайта вы хотите, чтобы изображения поступали из локальных копий, а не из облака?

Извините, я не думаю, что это возможно, по крайней мере, с mod_rewrite.Ваш локальный сервер передает URL вашего браузера, которые указывают на облако.Когда ваш браузер обрабатывает эти URL-адреса, он отправляет запрос на реальный веб-сайт.Вы не можете переписать запрос, отправленный на какой-либо другой сервер!

Вам потребуется отфильтровать исходящий HTML-код, чтобы перезаписать URL-адреса, чтобы эти домены указывали на локальный сервер.

Если задействован только один домен, обычное решение - не использовать абсолютные ссылки в HTML, а только ссылки, относящиеся к этой веб-странице.(Для любых ссылок, которые не пересекают домены, вы должны использовать их относительную страницу.)

Решением будет создание локальной тестовой среды с собственным DNS-сервером в локальной сети, который будет решать эти проблемы.доменные имена на ваш локальный сервер.Таким образом, ваш браузер одурачен тем, что отправляется на ваш локальный сервер для этих доменов.

Если ваш браузер работает на Linux или другой Unix-подобной ОС, вы можете просто взломать это с помощью /etc/hosts, а не сложной настройкой DNS:

# /etc/hosts on the machine where the browser and server are running
127.0.0.1 foo.example.com bar.example.com xyzzy.example.com

Теперь эти три имени хоста указывают на сервер.Когда ваш браузер (запущенный на той же машине) захочет получить foo.example.com/img/dog.jpg, он подключится к серверу по адресу 127.0.0.1.

. Сконфигурируйте этот сервер с Alias для переадресации URL /img/ соответствующим образом.:

# httpd.conf
Alias /img/ /Users/path-to-local-website/img/

Но теперь вы видите только локальный сайт.Не только изображения.Все ссылки локально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...