.htaccess 重定向至“自定义404-页面在本地主机(Apache)上不工作”诊断树

ej83mcc0  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(138)

我有一个.htaccess-文件,它包含下面列出的指令。前三行用于提供403、404和429的自定义错误页面。

ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
ErrorDocument 429 /429.php

DirectoryIndex maintenance.html index.php index.html index.htm home.html 
#Rewrite everything to https
<If "%{HTTP_HOST} != 'localhost'">
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</If>
<Else>
    # local configuration 
    # nothing special here...
</Else>

当我发布到我的网站时,这个功能非常好用。当我试图打开一个不存在的页面时,比如mysite.com/wrongpage.php,自定义的404.php页面就会显示出来。
但是当我尝试在localhost上输入localhost/wrongpage.php时,它只是显示浏览器默认的404消息。404.php页面存在,但没有按预期使用。
我不太擅长如何使用.htaccess文件,但是也许你可以帮助我理解为什么它不能在localhost上工作?

oo7oh9g9

oo7oh9g91#

这表明您尚未在本地开发服务器上启用.htaccess覆盖。.htaccess文件基本上被禁用,因此指令不执行任何操作。
您需要在服务器配置的适当<Directory>容器(或<VirtualHost>容器)中设置AllowOverride指令。“适当”是指指向文档根目录的特定<Directory>容器,而不是整个服务器(应该保持AllowOverride None)。
例如:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Require all granted

        # Enable .htaccess overrides
        AllowOverride All

    </Directory>
</VirtualHost>

然后重新启动Apache。
参考编号:

  • https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

相关问题