Перенаправление в httpd-vhosts.conf не работает должным образом с XAMPP - PullRequest
0 голосов
/ 05 февраля 2019

Используя Windows 10 и XAMPP, у меня есть перенаправление для виртуального хоста в httpd-vhosts.conf:

<VirtualHost *:80>
    DocumentRoot c:/xampp/htdocs/yoursite.com
    ServerName yoursite.com
    <Directory c:/xampp/htdocs/yoursite.com>
        AllowOverride All
        RewriteEngine on
        RewriteBase /
        Allow From All
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule (.*) capture.php?q=$1 [L,QSA,R=301]
    </Directory>
</VirtualHost>

capture.php, на данный момент, просто говорит привет и повторяет URL.Это прекрасно работает, пока я не создам файл .htaccess: yoursite.com/.htaccess.Если файл .htaccess пуст или содержит только комментарии, перенаправление по-прежнему работает должным образом.Если файл .htaccess содержит что-то еще, даже правило, которое не имеет никакого эффекта, я получаю 404. Вот пример:

RewriteCond %{HTTP_HOST}  ^nosuchhost
RewriteRule (.*) http://localhost/mysite.com/index.php

Это условие никогда не будет выполнено, и правило никогда не будет применяться, но оновсе еще предотвращает перенаправление из файла httpd-vhosts.conf и выдает 404.

.htaccess файл явно читается, как и файл httpd-vhosts.conf.

Если Apache находит правила перезаписи в локальном файле .htaccess, он выбрасывает и забывает все правила перезаписи, полученные из файла httpd-vhosts.conf?Или я что-то не так понял?

Вот содержимое файла хостов Windows:

127.0.0.1       localhost
127.0.0.1       yoursite.com

1 Ответ

0 голосов
/ 09 февраля 2019

Это будет звучать невероятно, но, попробовав каждое возможное решение, я наконец попытался удалить кучу комментариев в .htaccess, которые содержали условия и правила перезаписи.После этого все стало работать как надо.

Это не имеет смысла, потому что первое, что сделает приличный парсер, это отбросит все комментарии, но другого объяснения у меня нет.(И да, я позаботился о том, чтобы в наборе не было никаких блуждающих правил без комментариев.)

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

...