【问题标题】:local URL for apache ErrorDocument directive not working in .htaccess fileapache ErrorDocument 指令的本地 URL 在 .htaccess 文件中不起作用
【发布时间】:2018-01-03 12:13:29
【问题描述】:

我想使用本地 URL(相对路径)来显示我的自定义 404 错误消息,但它似乎没有按预期工作。正如 apache 文档所述 here

ErrorDocument 指令的语法是:

ErrorDocument <3-digit-code> <action>

操作将被视为:

  1. 要重定向到的本地 URL(如果操作以“/”开头)。

  2. 要重定向到的外部 URL(如果操作是有效的 URL)。

  3. 要显示的文本(如果以上都不是)。如果文本包含多个单词,则文本必须用引号 (") 括起来。

方法 2 和 3 工作正常。出于测试目的,想象一个名为 test 的文件夹,其中包含 3 个文件。

index.php: 主页

404.php:自定义 404 页面

.htaccess:

RewriteEngine On 

ErrorDocument 404 /404.php

现在访问此 URL http://localhost/test/blah-blah 不会显示我的 404.php 页面,而是显示默认的 Not Found 页面并显示此消息:

The requested URL /tests/test-htaccess/asdasd was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an 
ErrorDocument to handle the request.

知道如何解决这个问题吗?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    自您提出问题以来,您可能已经找到了问题的解决方案,但对于遇到相同问题的任何人,我会说问题在于您使用 localhost 运行您的网站。

    消息说 Apache 在尝试获取为 Errordocument 404 指定的文件时遇到 404 错误,所以它看不到

    /404.php
    

    我建议你在你的 hosts 文件中创建一个假域名并使用它设置一个虚拟主机。

    OSX 上的主机:

    sudo nano /etc/hosts
    

    Windows 上的主机,右键单击此文件以管理员模式编辑:

     C:\WINDOWS\System32\Drivers\Etc\Hosts
    

    然后输入如下内容:

    127.0.0.1 myfakedomain.com
    

    要设置虚拟主机,您必须在 httpd.conf 中取消注释对 httpd-vhosts.conf 的调用(接近尾声,在这种情况下使用 MAMP)

    # Virtual hosts
    Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    

    但此文件的位置取决于您使用的堆栈(Wamp、Mamp、Xampp 等),因此请在其文档中使用关键字“虚拟主机”进行搜索。

    然后您将能够使用

    运行您的网站
    myfakedomain.com/ 
    

    在您的浏览器中,应该以正确的方式处理 404 错误。

    【讨论】:

    • 我不记得在本地找到了解决方案。这很有趣,我已经测试了你的解决方案并且它正在工作,谢谢
    • 很高兴您发现这很有趣。当我遇到同样的问题时,我自己已经挣扎了几个小时,所以我认为离开我的经验可能会有所帮助。
    猜你喜欢
    • 2017-11-27
    • 2018-01-03
    • 2021-10-27
    • 2014-09-03
    • 2014-05-23
    • 2021-03-25
    • 2011-08-11
    • 1970-01-01
    • 2013-07-12
    相关资源
    最近更新 更多