启用 RewriteEngine 的 htaccess 文件导致 403

启用 RewriteEngine 的 htaccess 文件导致 403

Windows 服务器 2022
Apache 2.4.57 x64

httpd配置文件- 相关的

<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 Offhttps://www.example.com/供应index.php

那么RewriteEngine Onhttps://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>

检查日志发现:

[rewrite:error] AH00670:选项 FollowSymLinks 和 SymLinksIfOwnerMatch 均已关闭,因此 RewriteRule 指令也被禁止,因为它具有类似的规避目录限制的能力

阅读手册重写规则揭示了:

要在此上下文中启用重写引擎,您需要设置“RewriteEngine On”并且必须启用“Options FollowSymLinks”。

面,接掌。

相关内容