2012-03-09 2 views
1

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

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 для этого? Спасибо

+0

Вы управляете 'resources.website.com'? –

+0

Думаю, вам нужно дать нам более подробную информацию. Мы говорим о нескольких разных серверах здесь? Какая была бы связь? –

+0

Благодарим вас за интерес к моему вопросу и извините, если я не был очень ясен. Мой сайт находится на домене и субдоменах, которые у меня есть, но я хочу сохранить полностью автономную автономную копию на своем компьютере. Некоторые страницы сайта требуют ресурсов, используя абсолютный путь к субдоменам, которые у меня есть, например images.mywebsite.com/mypic.gif, и я хотел бы настроить локальный файл conf apache для перезаписи этих ссылок, чтобы указать на локальную папку, где изображения были созданы. Я думал, что mod_rewrite может выполнить эту работу, но я не знаком с синтаксисом. Любая помощь с этим будет оценена по достоинству. Спасибо –

ответ

1

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

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

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

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

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

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

Если ваш браузер на Linux или других Unix-подобных ОС, вы можете simiply взломать это с /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 направить в соответствующих случаях /img/ URL,:

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

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

+0

Большое вам спасибо за ваш ответ. Я думал об изменении/etc/hosts, но я больше не смог бы отображать удаленный веб-сайт на этом компьютере. Я надеялся найти решение, которое будет вычитать, где получить контент из URL. Вы должны быть правы, это невозможно, поскольку браузер обрабатывает запросы images/css/js. Еще раз спасибо –

+0

Вы можете настроить это на виртуальной машине. Просмотрите в ОС хоста, и вы увидите развернутый веб-сайт. Просмотрите гостевую ОС, и '/ etc/hosts' позволяет просматривать один из них. – Kaz

+0

Или, черт возьми, окружение 'chroot'-ed в пределах того же образа ОС. – Kaz

2

Вы можете сделать это с помощью 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 на вашем локальном хосте.

+0

Большое спасибо за ваш ответ. У вас есть интересная идея здесь, но я ищу что-то, что будет работать в автономном режиме (отключен интернет) и позволит мне отображать веб-контент (img/js/css) с моей локальной машины без изменения абсолютных URL-адресов в html. Это трудно сделать. Еще раз спасибо –

+0

Если это так, то наилучшим вариантом является размещение записи в '/ etc/hosts'. – anubhava

Смежные вопросы