mod_rewrite, ссылки, виртуальные хосты - PullRequest
0 голосов
/ 13 февраля 2012

Кажется, что я никогда не буду ладить с mod_rewrite ... Я в типичном сценарии:

homepage_one.tld/impressum.php --> domain.tld?content=impressum
homepage_one.tld/projects.php --> domain.tld?content=projects
homepage_one.tld/projects/canvas.php --> domain.tld?content=projects&project=canvas

Я работаю в автономном режиме, использую Ubuntu Server Edition на VMware. Это означает, что локальный домен для проверки моей homepage_one: _http: /// localhost: 2180 / homepage_one / index.php Позже это будет _ http://homepage_one.tld.

 <Directory /var/www/homepage_one>
                RewriteEngine on
                RewriteRule ^([^/]*)\.php$ index.php?content=$1 [QSA,L]
                RewriteRule ^projects/(.*)\.php$ index.php?content=projects&project=$1 [QSA,L]
        </Directory>

Все css / ссылки на изображения * прерваны * сейчас, когда я спрашиваю URL: _ http://localhost:2180/homepage_one/projects/canvas.php (Он ищет «homepage_one / проекты / canvas / style.css» вместо «homepage_one / style.css»

большинство ответов в stackoverflow относительно этой проблемы: используйте абсолютные ссылки . Я попробовал это, но чтобы протестировать это в автономном режиме, моя абсолютная ссылка была бы /homepage_one/style.css, и мне пришлось бы изменить ВСЕ ссылки, как только я опубликую сайт. Я также пытался использовать тег html-base. Но это не сработало ни за что .... есть идеи?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Йоханнес, это действительно ответ на ваш ответ :-) Обычный способ перечисления записей - IP name name, например,

127.0.0.1  localhost mysite.vm subdomain.mysite.vm blog.mysite.vm

или любой другой.

Я также нахожу переадресацию портов полной болью.Я всегда использую мостовую или хост-сеть.Мои навыки работы с Windows / WMware немного устарели, поскольку я сдался обоим около 5 лет назад, но на этой странице VMware описано, как это сделать, если вы используете VMware Workstation.Вы можете сделать то же самое с устройством VMware, но вы должны начать настройку файла VMX.Как я уже говорил в своей статье в блоге, которую я рекомендую вам прочитать, с VBox мне будет проще.

В сети с мостовыми соединениями, если вы размещаете MAC-адрес сетевого адаптера 00: 23: 18: dd: 88:88, и ваша виртуальная машина - 08: 00: 27: FE: FE: FE, затем сетевой драйвер VMware программирует сетевой адаптер хоста для ответа на оба, но затем передает пакеты 08: 00: 27: FE: FE: FE на виртуальный сетевой адаптер виртуальной машины.,Следовательно, виртуальная машина участвует в сети, как и любой другой ПК, и выглядит как ПК / сервер для любых других устройств.Я запускаю все свои домашние устройства в частном адресном пространстве 192.168.1.0/24, поэтому я просто статически выделяю IP-адреса для своих виртуальных машин в 192.168.1.192/26.

Большим преимуществом мостовых и хост-сетей является то, что вы можете использовать порт 80 по умолчанию, и при желании вы также можете (временно) переопределить свою запись DNS, чтобы ваш myprodsite.com указывал на вашВМ, так что любые абсолютные кодированные URI http://myprodsite.com/ будут затем указывать на ВМ во время тестирования.

Надеюсь, это поможет: -)

0 голосов
/ 14 февраля 2012

Решение (благодаря @TerryE):

Edit C:\Windows\System32\drivers\etc resp. /etc/hosts (linux)
127.0.0.1  my_homepage1.vm
127.0.0.1  my_homepage2.vm

в моем случае, используя переадресацию портов на разные виртуальные машины, я могу связаться с ними следующим образом:

my_homepage1.vm:2180 --> VM1
my_homepage1.vm:2280 --> VM2

теперь я могу просто использовать VirtualHosts, как на моем производственном сервере, и использовать абсолютных ссылок .

...