Виртуальный хост Httpd / Apache2 и конфликт имени хоста

У меня есть домен т.е. test.example.com.

Я установил имя хоста моего сервера с помощью uisng:

hostname test.example.com

Затем я добавляю виртуальный хост в /etc/httpd/conf/httpd.conf

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/mydir
    ServerName test.example.com
    ServerAlias www.test.example.com
</VirtualHost>

, затем перезапускаю Httpd служба. Если я пытаюсь получить доступ к test.example.com, я получаю index.php в / var / www / html, а не в указанной папке. Если я изменю имя хоста на другое, а затем перезапущу httpd, виртуальный хост будет работать должным образом, поэтому я могу только предположить, что когда есть входящее соединение с именем хоста, apache удаляет URL-адрес.

В php при печати

$_SERVER['REQUEST_URI']
$_SERVER['REDIRECT_URL']

я получаю /. Может ли кто-нибудь сказать мне, как решить эту проблему, или мне следует оставить имя хоста как другое? У меня есть сценарий резервного копирования, который использует имя хоста в качестве имени каталога, чтобы я мог удобно организовать резервные копии, это основная причина, по которой я изначально изменил имя хоста.

2
задан 18 December 2015 в 14:11
2 ответа

В вашем случае я бы заменил

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/mydir
    ServerName test.example.com
    ServerAlias www.test.example.com
</VirtualHost>

на

<VirtualHost *:80>
    DocumentRoot /var/www/html/mydir
    ServerName test.example.com
    ServerAlias www.test.example.com
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
ServerName localhost
ServerAlias *
DocumentRoot /var/www/html/
</VirtualHost>

Как будто все запросы, кроме test.example.com и www.test.example.com, доставят /var/www/html/

Больше информации: NameVirtualHost не имеет смысла в вашем случае, и был удален в Apache 2.4. https://httpd.apache.org/docs/2.4/en/upgrading.html

2
ответ дан 3 December 2019 в 10:00

Я бы порекомендовал изменить :

<VirtualHost *:80>
    DocumentRoot /var/www/html/
</VirtualHost>

на :

<VirtualHost *:80>
    DocumentRoot /var/www/html/
    ServerName example.com
    ServerAlias www.example.com
</VirtualHost>

Я видел это несколько раз на клиентских серверах, и это исправило проблему.

Обычно я указываю запись о Виртуальном Хосте (Virtual Host) с именем сервера в каталог с предстоящим или будущим домом php файла до тех пор, пока я не буду готов взять сервер или сайт вживую, так как это будет иметь преимущественную силу перед любыми будущими записями.

.
2
ответ дан 3 December 2019 в 10:00

Теги

Похожие вопросы