2012-02-13 6 views
-1

кажется, что я никогда не буду ладить с mod_rewrite ... Я в типичном сценарии: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. Это означает, что локальный домен для проверки на моей домашней странице: _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: // локальный: 2180/homepage_one/проекты/canvas.php (Он ищет «homepage_one/проектов /canvas/style.css» вместо «homepage_one/style.css»

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

+0

Похоже, у вас есть еще несколько правил перезаписи. Итак, отправляйте их. – ThinkingMonkey

+0

нет, все. На самом деле http: // localhost: 2180/homepage_one/projects.php работает отлично. У меня только проблемы с дополнительным каталогом, когда я использую 2 параметра, так как мой браузер не знает, что этот каталог просто «поддельный» –

+0

добавляет другое правило перезаписи, указывающее на соответствующий каталог для связанных файлов, таких как изображения и таблицы стилей , Так что если у вас есть: 'homepage_one.tld/проекты/canvas.php -> domain.tld содержание = проекты и проект = canvas' Добавить: ' homepage_one.tld/проекты /([^/.]+) .css -> domain.tld/path/to/your/css/$ 1.css' Это может быть не на 100% правильное, прошло некоторое время с тех пор, как я установил мой. Прочитайте: http://httpd.apache.org/docs/2.0/misc/rewriteguide.html – Erik

ответ

0

Solution (благодаря @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 

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

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

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

1

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

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

или что-то еще.

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

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

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

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

+0

puh ... это полностью помогает. Я никогда не настраивал мостовую сеть раньше; на самом деле я был счастлив, что не перенаправлял порт на мой виртуальный сервер. Спасибо, я думаю, я попробую это в выходные, поэтому мне не нужно использовать пересылку портов «полная боль»;) –

+0

Если это полностью помогает +1 или тик, возможно, будет приятно ;-) – TerryE

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