Виртуальный хост перенаправляет по умолчанию

835
Christia

Я использую Debian и Apache.

Я хочу создать новую среду разработки на моем сервере разработки. Давайте назовем это dev2. В настоящее время на сервере dev размещается только dev. Мой рабочий сервер размещает живой сайт, доступный через *.example.com. После выполнения dev2.example.comописанных ниже действий по настройке с собственным документированием URL-адрес dev2 перенаправляется dev.example.comна сайт по умолчанию на сервере dev.

Вот шаги, которые я предпринял:

  • В нашей учетной записи хостинга у нас есть запись A для wwwперехода на IP-адрес рабочего сервера. Другая запись A dev.example.comотправляется на сервер разработчика, и этот URL-адрес загружает веб-сайт разработчика по умолчанию. Я создал новую запись A для dev2указания на IP-адрес сервера dev.
  • Я пинговал, dev2.example.comчтобы убедиться, что это сработало и не было потери пакетов.
  • Я создал новый docroot и фиктивный индекс: /var/www/html/dev2/docroot/index.html
  • Затем я создал dev2.confфайл /etc/apache2/sites-availableи создал символическую ссылку на него /etc/apache2/sites-enabled.
  • Затем я запустил команду sudo a2ensite dev2.confи перезагрузил Apache через service apache2 reload. Наконец, я очистил кеш браузера и когда это не сработало, я перезапустил apache2.

Что мне не хватает? Вот содержимое dev2.confфайла.

<VirtualHost xxx.xxx.xxx.xxx:80> ServerAdmin tech@example.com ServerSignature email ServerName dev2.example.com DirectoryIndex index.php index.html index.htm index.shtml DocumentRoot /var/www/html/dev2/docroot HostNameLookups off RewriteEngine on  # Force SSL RewriteCond % ^dev2\.example\.com$ [NC] RewriteRule ^(.*)$ https://dev2.example.com$1 [L,R=301] RewriteCond % !=on RewriteRule ^(.*)$ https://dev2.example.com$1 [L,R=301]  # Force our domain name RewriteCond % !^dev2\.example\.com [NC] RewriteCond % !^$ RewriteRule ^/(.*) https://dev2.example.com/$1 [L,R]  <Directory /> Options FollowSymLinks AllowOverride None </Directory>  <Directory /var/www/html/dev2/docroot> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted  # For friendly URLs RewriteEngine on RewriteBase / RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </Directory>  ErrorLog $/error.log  # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn  CustomLog $/access.log combined </VirtualHost> 

Изменить: я также попытался добавить строку ServerAlias dev2.example.comпод ServerName безрезультатно.

2
Попробуйте установить здесь строку назначения IP-адреса.`к``и затем перезапустите Apache следующим образом` service apache2 graceful` вместо использования `reload`. JakeGould 7 лет назад 0

1 ответ на вопрос

2
HBruijn

Основываясь на фактическом домене, о котором вы спрашиваете (теперь он отредактирован, представлен example.com), в ваших текущих конфигурациях есть небольшая путаница:

wget http: // dev .example.com
--2017-03-14 22: 20: 03-- http://dev.example.com/
Устранение dev.example.com ... 206.123.xxx.182
Подключение к dev.example.com | 206.123.xxx. 182 |: 80 ... подключен.
HTTP-запрос отправлен, ожидание ответа ... 301 Постоянно перемещено
Местоположение: http s : // dev2 .example.com / [ follow ]

По какой-то причине обычный http-сайт devперенаправляет на https-сайт для dev2. Постоянные перенаправления (301 ответ) кэшируются большинством веб-браузеров, поэтому будьте осторожны при тестировании каждого изменения конфигурации, которое вы применяете. Либо тестируйте с помощью инструментов командной строки, либо используйте новое окно браузера для каждого теста ...

wget http: // dev2 .example.com
URL-адрес, преобразованный в HTTPS из-за политики HSTS
--2017-03-14 22: 24: 45-- https://dev2.example.com/
Разрешение dev2.example.com ... 206.123.xxx.182 Подключение к dev2 .example.com | 206.123.xxx.182 |: 443 ... подключено.
HTTP-запрос отправлен, ожидание ответа ... 302 Найдено
местоположение: http s : // dev .example.com / [follow]

dev2Сайт делает что - то отличное от dev; применяется политика HSTS для перенаправления на HTTPS, а затем происходит перенаправление (в данном случае временное перенаправление 302) dev.

В итоге: devперенаправляет на dev2 и dev2перенаправляет на dev.

Необходимо проверить не только конфигурацию для, dev2но и конфигурацию для devобычного виртуального хоста http на порту 80, а также конфигурацию виртуального хоста SSL на порту 443.

Спасибо за Ваш ответ. Когда я создавал символическую ссылку в сайтах с поддержкой /etc/apache2/sites-available/dev2.conf, я добавил опечатку, чтобы она перенаправляла на сайты available-dev / dev.conf. С уважением. Christia 7 лет назад 0