htaccess с включенным RewriteEngine вызывает ошибку 403.

Windows Server 2022
Apache 2.4.57 x64

httpd.conf — актуально

      <Directory />
    Options none
    AllowOverride none
    Require all denied
</Directory>
DirectoryIndex index.html
<Files ".ht*">
    Require all denied
</Files>

httpd-vhosts.conf — актуально

      <VirtualHost *:443>
    DocumentRoot "c:/path/to/public_html"
    DirectoryIndex index.php
    <Directory "c:/path/to/public_html">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

файлы

      c:/path/to/public_html/index.php
c:/path/to/public_html/.htaccess

.htaccess — полный

      RewriteEngine Off

КогдаRewriteEngine Offзатем служитindex.php

КогдаRewriteEngine Onтогда https://www.example.com/https://www.example.com/ приведет к ошибке 403-Forbidden

Я упускаю какую-то очевидную директиву?

Примечание. Описанное выше поведение остается прежним, даже если явно запрошен https://www.example.com/index.php .

1 ответ

ЗАФИКСИРОВАННЫЙ!

      <VirtualHost *:443>
    DocumentRoot "c:/path/to/public_html"
    
    ## NEW
    RewriteEngine On
    
    DirectoryIndex index.php
    <Directory "c:/path/to/public_html">
        AllowOverride All
        Require all granted
        
        ## NEW
        Options +FollowSymlinks
        
    </Directory>
</VirtualHost>

Проверка журналов показала:

[перезапись: ошибка] AH00670: параметры FollowSymLinks и SymLinksIfOwnerMatch отключены, поэтому директива RewriteRule также запрещена из-за ее аналогичной способности обходить ограничения каталога.

RewriteRule с помощью RTFM показывает:

Чтобы включить механизм перезаписи в этом контексте, вам необходимо установить «RewriteEngine On» и «Параметры FollowSymLinks» должны быть включены.

Лицо, знакомьтесь с ладонью.

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