lmhost и локальное тестирование веб-сайтов

Мне нужно управлять несколькими веб-сайтами. Для тестирования у меня есть локальная (localhost) копия и онлайн-копия.

Механизм CMS http://Pyrocms.net имеет многосайтовый менеджер, и вы вводите домен. В браузере вы вводите доменное имя, и оно обслуживает веб-сайт для сайта запроса, который хранится в центральной базе данных.

В сети это работает нормально, но локально нет, в итоге мне приходится печатать

localhost/silo1/myclient1/

Я хотел бы иметь возможность печатать

myclient1.test

Первое, о чем я подумал, был файл lmhost, но я не могу сопоставить его с подкаталогами, только с IP-адресами.

Ниже показано, что я пытался сделать в файле хоста в Windows7, это не сработало, оно просто направило меня на 127.0.0.1, когда я ввел mywebsite2.test.

ФАЙЛ HOSTAKA LMHOST

File stored @ #C:\Windows\System32\drivers\etc
lmhost/host file
127.0.0.1                   mywebsite1.test
127.0.0.1/mywebsite2/       mywebsite2.test  **#I want to do something like this**

Технологии:

  • ОС: Windows7 Сервер: WAMP 2

  • (Apache с включенной модификацией Rewrite)


person IEnumerable    schedule 07.12.2012    source источник


Ответы (2)


Если я вас правильно понял, единственный способ добиться этого - это...

Редактирование файла HOSTS (не LMHOSTS) для преобразования вашего поддельного доменного имени в петлевой адрес (127.0.0.1).

127.0.0.1 myclient1.test
127.0.0.1 myclient2.test

Затем используйте файл .htaccess с условиями и правилами mod_rewrite, чтобы соответствовать заголовку хоста (для каждого отдельного веб-сайта) и внутренне переписать запрос в соответствующую подпапку/вложенный URL-адрес.

RewriteCond %{HTTP_HOST} ^myclient1\.test$ [NC]
RewriteRule ^/*(.*)$ http://localhost/silo1/myclient1/$1 [NC]

RewriteCond %{HTTP_HOST} ^myclient2\.test$ [NC]
RewriteRule ^/*(.*)$ http://localhost/silo2/myclient2/$1 [NC]

Или если вы хотите сделать полное перенаправление (вместо внутреннего перенаправления)...

RewriteRule ^/*(.*)$ http://localhost/silo1/myclient1/$1 [R=301,NC]
person rightstuff    schedule 07.12.2012
comment
-Я попробовал ваше решение, и оно тоже сработало, я отдаю вам должное, но посмотрите и мое решение. - person IEnumerable; 08.12.2012
comment
@IEnumerable, моя вина, как я изначально прочитал, было требование пройти через VH или URL-адрес локального хоста. Без этого использование отдельного VH для каждого доменного имени будет работать так же хорошо. - person rightstuff; 08.12.2012

Редактирует файл HOST.

127.0.0.1 myclient1.test
127.0.0.1 myclient2.test

В файле httpd.conf я добавил

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName myclient1.test
   DocumentRoot C:\wamp\www\silo1\myclient1\
</VirtualHost>

<VirtualHost *:80>
   ServerName myclient2.test
   DocumentRoot C:\wamp\www\silo1\myclient2\
</VirtualHost>
person IEnumerable    schedule 08.12.2012