Используя 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