Я получаю сообщение об ошибке, когда я открываю свой сайт снаружи. Я получаю эту ошибку: Внутренняя Ошибка Сервера Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог выполнить ваш запрос.
Если я удалю свой .htaccess, он не выдаст мне ошибку, но покажет мне путь к /htdocs, и я настроил подпапку.
Если я открою localhost:80, он правильно перенаправит в подпапку htdocs/folder-name Проблема в том, что я открываю его через внешний www.домен.com.
Это мой .htaccess. Путь: C:\Apache24\htdocs.htaccess Содержание:
#DON'T SHOW DIRECTORY LISTINGS
Options -Indexes
#FOLLOW SYMBOLIC LINKS
Options +FollowSymLinks
#SET DEFAULT HANDLER
DirectoryIndex index.html index.php
RewriteEngine on
RewriteCond %{HTTP_HOST} ^DOMAIN.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.DOMAIN.com$
RewriteCond %{REQUEST_URI} !FOLDER/
RewriteRule (.*) /FOLDER/$1 [L]
#ERROR 404 PAGE
ErrorDocument 404 /404.html
ЖУРНАЛ АПАЧИ:
client denied by server configuration: C:/Apache24/htdocs/WEBSITE-XX/
[AH01797: client denied by server configuration: C:/Apache24/error/HTTP_FORBIDDEN.html.var
AH01797: client denied by server configuration: C:/Apache24/htdocs/WEBSITE-XX/favicon.ico, referer: https://www.example.com/
AH01797: client denied by server configuration: C:/Apache24/error/HTTP_FORBIDDEN.html.var, referer: https://www.example.com/
** модуль перезаписи активен и путь правильный **
httpd.conf код VirtualHost
РЕДАКТИРОВАТЬ
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot C:\Apache24\htdocs\example
ErrorLog C:\Apache24\logs\error.log
CustomLog C:\Apache24\logs\access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot C:\Apache24\htdocs\example
ErrorLog C:\Apache24\logs\error.log
CustomLog C:\Apache24\logs\access.log combined
SSLEngine on
SSLCertificateFile C:\Apache24\conf\certificate.crt
SSLCertificateKeyFile C:\Apache24\conf\private.key
</VirtualHost>
**** РЕДАКТИРОВАТЬ С НОВЫМ HTTPD.CONF ****
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot C:\Apache24\htdocs\example
ErrorLog C:\Apache24\logs\error.log
CustomLog C:\Apache24\logs\access.log combined
<Directory C:\Apache24\htdocs\example>
# Requried for mod_rewrite (and disable Indexes / MultiViews)
Options FollowSymLinks
# Allow access
Require all granted
# Enabled .htaccess overrides
AllowOverride All
</Directory>
Redirect 301 / https://example.com/
# RewriteEngine on
# RewriteCond %{SERVER_NAME} =example.com [OR]
# RewriteCond %{SERVER_NAME} =www.example.com
# RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot C:\Apache24\htdocs\example
ErrorLog C:\Apache24\logs\error.log
CustomLog C:\Apache24\logs\access.log combined
<Directory C:\Apache24\htdocs\example>
# Requried for mod_rewrite (and disable Indexes / MultiViews)
Options FollowSymLinks
# Allow access
Require all granted
# Enabled .htaccess overrides
AllowOverride All
</Directory>
SSLEngine on
SSLCertificateFile C:\Apache24\conf\certificate.crt
SSLCertificateKeyFile C:\Apache24\conf\private.key
</VirtualHost>
````
@MrWhite я добавил конфигурацию виртуального хоста в httpd.conf, извините
<VirtualHost *:80> : DocumentRoot C:\Apache24\htdocs\example : <VirtualHost *:443> : DocumentRoot C:\Apache24\htdocs\Mymxtools
Как ни странно, вы определили разные DocumentRoot
для двух виртуальных хостов. (Может быть, это ошибка в вашем примере?) Хотя вы все перенаправляете на HTTPS, так что это не имеет большого значения, как это происходит.
Однако вы не «разрешили» доступ к этой части файловой системы или не включили .htaccess
переопределения.
Вам понадобится что-то вроде следующего в контейнере <VirtualHost *:443>
, чтобы предоставить доступ и включить переопределения .htaccess
.
<Directory C:\Apache24\htdocs\Mymxtools>
# Requried for mod_rewrite (and disable Indexes / MultiViews)
Options FollowSymLinks
# Allow access
Require all granted
# Enabled .htaccess overrides
AllowOverride All
</Directory>
В стороне:
RewriteEngine on RewriteCond %{SERVER_NAME} =example.com [OR] RewriteCond %{SERVER_NAME} =www.example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Чтобы перенаправить все с HTTP на HTTPS в контейнере <VirtualHost *:80>
, вам не нужно это «сложное» правило mod_rewrite. Достаточно (и предпочтительнее) гораздо более простого mod_alias Redirect
.
Например, вместо этого используйте следующее:
Redirect 301 / https://example.com/
На этом этапе вы должны канонизировать имя хоста. Ваше предыдущее правило mod_rewrite сохранило бы имя хоста, т.е. www или без www.
все еще дает мне ту же ошибку в журналах apache и поиске веб-сайта, может ли быть ошибка пути к папке Windows? Я обновил свой код, потому что я не знаю, куда поместить <Directory></Directory> Я не знаю, что правильно 1 или 2 1.- C:\Apache\xxx 2.-C:/Apache/xxx
@user18939999 user18939999 Предположительно, вы перезапустили Apache? Вы включили эти виртуальные хосты непосредственно в конфигурацию сервера? Применяются ли они? «я не знаю, куда положить <Directory></Directory>
» — как я сказал: «в контейнер <VirtualHost *:443>
». Вам не нужны они в контейнере vHost:80, так как вы перенаправляете все на HTTPS. В Windows вы можете использовать либо обратную косую черту, либо прямую косую черту.
да, я перезапустил его и все еще выдает ошибку, могу ли я попробовать «Требовать все предоставленные» во всех папках? Если разрешить доступ ко всем папкам, невозможно получить отказ в доступе.
@ user18939999 Директива <Directory>
применяется к указанному каталогу и всем подкаталогам. Вы создаете этот сайт в пределах другим сайтом? Обычно /htdocs
— это корень документа. Попробуйте создать этот сайт в другой области файловой системы на случай конфликта родительской конфигурации.
Если я удаляю .htaccess, он работает нормально. Он автоматически показывает мне веб-страницу, которая находится в папке htdocs/Example, и мне не нужно помещать туда example.com/example.
«клиент запрещен конфигурация сервера» — Итак, какая конфигурация сервера? Как вы настроили VirtualHost? Вы разрешили доступ? Был ли это ранее работающий сайт, а затем остановился после некоторого обновления? Или вы пытаетесь настроить это в первый раз? Похоже, это не имеет никакого отношения к вашему файлу
.htaccess
.