如何解决 Apache 中的 403 禁止错误?

Posted

技术标签:

【中文标题】如何解决 Apache 中的 403 禁止错误?【英文标题】:How to Solve 403 Forbidden Error in Apache? 【发布时间】:2019-12-27 17:03:53 【问题描述】:

我在服务器端工作,但遇到了问题。我在我的服务器中使用 XAMPP 和 Apache 服务器。首先,我购买了一个静态 IP,并打开端口供所有人访问。

我可以在以下情况下成功:“http://StaticIP/api/NewsJson”。但是当我尝试 "https://StaticIP/api/NewsJson" 时,我在浏览器中出现 403 错误。我搜索并找到了一些解决方案。

首先,我在 "xampp\apache\conf\extra\httpd-xampp" 文件夹中更改行。我更改本地授予的更改需要全部授予。

ScriptAlias /php-cgi/ "C:/xampp/php/"
<Directory "C:/xampp/php">
    AllowOverride None
    Options None
    Require all granted
    <Files "php-cgi.exe">
          Require all granted
    </Files>
</Directory>

<Directory "C:/xampp/cgi-bin">
    <FilesMatch "\.php$">
        SetHandler cgi-script
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler None
    </FilesMatch>
</Directory>

<Directory "C:/xampp/htdocs/xampp">
    <IfModule php7_module>
        Require all granted
        <Files "status.php">
            php_admin_flag safe_mode off
        </Files>
    </IfModule>
    AllowOverride AuthConfig
</Directory>

<IfModule alias_module>
    Alias /licenses "C:/xampp/licenses/"
    <Directory "C:/xampp/licenses">
        Options +Indexes
        <IfModule autoindex_color_module>
            DirectoryIndexTextColor  "#000000"
            DirectoryIndexBGColor "#f8e8a0"
            DirectoryIndexLinkColor "#bb3902"
            DirectoryIndexVLinkColor "#bb3902"
            DirectoryIndexALinkColor "#bb3902"
        </IfModule>
    Require all granted
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
   </Directory>

    Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
    <Directory "C:/xampp/phpMyAdmin">
        AllowOverride AuthConfig
    Require all granted
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
    </Directory>

    Alias /webalizer "C:/xampp/webalizer/"
    <Directory "C:/xampp/webalizer">
        <IfModule php7_module>
            <Files "webalizer.php">
                php_admin_flag safe_mode off
            </Files>
        </IfModule>
        AllowOverride AuthConfig
    Require all granted
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
    </Directory>
</IfModule>

然后,我将这一行添加到 "xampp\apache\conf\extra\httpd-vhosts" 文件夹中。

    <VirtualHost *:80>
                DocumentRoot "C:/xampp/htdocs/api/NewsJson"
                ServerName 192.168.*.** (My Server IP)
                <Directory "C:/xampp/htdocs/api/NewsJson">
                    Options Indexes FollowSymLinks Includes ExecCGI
                    AllowOverride All
                    Order allow,deny
                    Allow from all
                    Require all granted
                </Directory>
            </VirtualHost>

    <VirtualHost *:443>
            DocumentRoot "C:/xampp/htdocs/api/NewsJson"
                ServerName 192.168.*.** (My Server IP)
                <Directory "C:/xampp/htdocs/api/NewsJson">
                    Options Indexes FollowSymLinks Includes ExecCGI
                    AllowOverride All
                    Order allow,deny
                    Allow from all
                    Require all granted
                </Directory>
            </VirtualHost>

<VirtualHost *:443>
 DocumentRoot "C:/xampp/htdocs/api/NewsJson"
 ServerName 192.168.*.** (My Server IP)
 SSLEngine on
 SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"
 SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key"
</VirtualHost>

我更改了我的 ".htaccess" 文件夹。

RewriteEngine On
RewriteRule NewsJson.html$ NewsJson.php [L]

当我更改它们时,我关闭了 Apache 并再次打开。但是,我仍然采取 403 禁止错误。我该如何解决这个问题?

AH00112: Warning: DocumentRoot [C:/xampp/htdocs/api/NewsJson] does not exist
AH00112: Warning: DocumentRoot [C:/xampp/htdocs/api/NewsJson] does not exist
[Thu Aug 22 14:47:29.161955 2019] [ssl:warn] [pid 5332:tid 384] AH01909: StaticIP:80:0 server certificate does NOT include an ID which matches the server name
[Thu Aug 22 14:47:29.161955 2019] [ssl:warn] [pid 5332:tid 384] AH01915: Init: (StaticIP:80) You configured HTTPS(443) on the standard HTTP(80) port!

【问题讨论】:

【参考方案1】:

为了能够在浏览器中通过 HTTPS 访问您的项目,您必须首先在 Apache 服务器上设置 SSL 证书。 XAMPP 本身并不会这样做,因此此时您必须手动操作。

有关如何为本地 XAMPP 项目设置 SSL/HTTPS 的教程中解释了其工作原理。 https://www.askingbox.com/tutorial/xampp-how-to-set-up-ssl-https-for-local-projects

【讨论】:

感谢您的回答,但我为本地创建了 SSL。现在,我将我的“httpd-vhosts”文件添加到我的 SSL 位置。但是,当我重新启动我的 apache 服务器时,它无法运行我的 apacher 服务器。 SSLCertificateFile 上的 SSLEngine "C:/xampp/apache/conf/ssl.crt/server.crt" SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key" @AlpYuktug 你看过 apache 错误日志吗?它说什么? @AlpYuktug 谢谢,我重现了这个问题。我很快就会为您添加一个可行的解决方案。

以上是关于如何解决 Apache 中的 403 禁止错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决wordpress中的403禁止错误?

django web 服务器中的 403 禁止错误

如何解决安装IIS时出现HTTP错误403禁止访问?

403 错误怎么解决?

运行 apache 时出现禁止的 403 错误

网络错误 403如何解决