Apache 2.4, Windows 10Apache простое правило переписывание работает хорошо, когда в HTTPd-vhosts.conf, но не тогда, когда в файле .htaccess
виртуального хоста в HTTPd-vhosts.conf:
<VirtualHost sporemvc:80>
ServerAdmin [email protected]
DocumentRoot "C:/Apache24vhosts/hosts/sporemvc"
ServerName sporemvc
ErrorLog "logs/sporemvc-error.log"
CustomLog "logs/sporemvc-access.log" common
<Directory C:/Apache24vhosts/hosts/sporemvc>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php [L]
</Directory>
</VirtualHost>
это работает хороший. И доказывает, что mod_rewrite включен.
Когда весь каталог не существует:
<VirtualHost sporemvc:80>
ServerAdmin [email protected]
DocumentRoot "C:/Apache24vhosts/hosts/sporemvc"
ServerName sporemvc
ErrorLog "logs/sporemvc-error.log"
CustomLog "logs/sporemvc-access.log" common
</VirtualHost>
и есть C: /Apache24vhosts/hosts/sporemvc/.htaccess файл
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
Правило перезаписи, похоже, не работает вообще - говорит Apache 404. Что может быть проблемой? Я убедился, что mod_rewrite включен и даже что .htaccess - это ANSI, а не UTF. В журналах Apache и vhost нет ничего более 404.
Что делать неправильно?
Вам необходимо включить интерпретацию файлов стиля .htaccess. Взгляните на их документацию: https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride – arkascha
Кроме того - зачем вы хотите использовать файлы стиля '.htaccess', если у вас есть acces и контролировать реальную конфигурацию хоста http? Эти файлы только создают проблемы и замедляют работу сервера. – arkascha
Привет, спасибо за ответ. Чтобы ответить на ваш вопрос о '.htaccess' - я имею контроль над веб-сервером разработки, это правильно. Но я, возможно, не в контролируемой среде. Также этот параметр в 'conf' требует перезагрузки сервера, что может быть менее удобным в производстве. –