Ошибка доступа к веб-htaccess AH01797: клиент запрещен конфигурацией сервера

Я получаю сообщение об ошибке, когда я открываю свой сайт снаружи. Я получаю эту ошибку: Внутренняя Ошибка Сервера Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог выполнить ваш запрос.

Если я удалю свой .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>
````

«клиент запрещен конфигурация сервера» — Итак, какая конфигурация сервера? Как вы настроили VirtualHost? Вы разрешили доступ? Был ли это ранее работающий сайт, а затем остановился после некоторого обновления? Или вы пытаетесь настроить это в первый раз? Похоже, это не имеет никакого отношения к вашему файлу .htaccess.

MrWhite 02.05.2022 14:12

@MrWhite я добавил конфигурацию виртуального хоста в httpd.conf, извините

user18939999 02.05.2022 16:32
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
2
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
<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 02.05.2022 17:28

@user18939999 user18939999 Предположительно, вы перезапустили Apache? Вы включили эти виртуальные хосты непосредственно в конфигурацию сервера? Применяются ли они? «я не знаю, куда положить <Directory></Directory>» — как я сказал: «в контейнер <VirtualHost *:443>». Вам не нужны они в контейнере vHost:80, так как вы перенаправляете все на HTTPS. В Windows вы можете использовать либо обратную косую черту, либо прямую косую черту.

MrWhite 02.05.2022 18:53

да, я перезапустил его и все еще выдает ошибку, могу ли я попробовать «Требовать все предоставленные» во всех папках? Если разрешить доступ ко всем папкам, невозможно получить отказ в доступе.

user18939999 02.05.2022 19:32

@ user18939999 Директива <Directory> применяется к указанному каталогу и всем подкаталогам. Вы создаете этот сайт в пределах другим сайтом? Обычно /htdocs — это корень документа. Попробуйте создать этот сайт в другой области файловой системы на случай конфликта родительской конфигурации.

MrWhite 02.05.2022 19:40

Если я удаляю .htaccess, он работает нормально. Он автоматически показывает мне веб-страницу, которая находится в папке htdocs/Example, и мне не нужно помещать туда example.com/example.

user18939999 02.05.2022 19:58

Другие вопросы по теме