【问题标题】:Redirect to/Show the 404 page in root directory when page/folder not found找不到页面/文件夹时重定向到/显示根目录中的 404 页面
【发布时间】:2012-01-09 01:53:02
【问题描述】:

请考虑我网站的以下结构:

www.mydomain.com/

www.mydomain.com/index.php

www.mydomain.com/404.php

www.mydomain.com/css

www.mydomain.com/blog/

在以下情况下,如何显示存在于我的根目录中的 404.php 页面及其 stylinf 和 css:

  1. 当用户尝试访问不存在的文件夹和/或其内容时? 示例:www.mydomain.com/nofolder

  2. 当用户尝试访问嵌套的不存在文件夹时? 示例:www.mydomain.com/nofolder1/nofolder2/nofolder3/

  3. 当用户试图访问不存在的文件嵌套不存在的文件夹时? 示例:www.mydomain.com/nofolder1/nofolder2/index.php

我已经有一个 .htaccess 文件,当在我的网站的根文件夹中访问一个不存在的页面时,它会显示 404 页面。我当前的 .htaccess 文件:

ErrorDocument 404  /404.php

当访问一个不存在的文件夹(例如:www.mydomain.com/nofolder)时,上面的代码显示了我的 404.php 页面的 CSS 剥离版本。我需要完整显示所有 CSS 和样式。为了用户友好,我认为最好保留输入的 URL,但仍然显示 404 页面。如何做到这一点?

编辑 1:

我需要在不使用 CSS 的绝对链接的情况下显示这一点。我该怎么做?

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    上面的代码显示了我的 404.php 的 CSS 剥离版本

    您必须为 CSS 链接使用绝对路径。而不是这个:

    <link rel="stylesheet" type="text/css" href="css" />
    

    使用这个:

    <link rel="stylesheet" type="text/css" href="/css" />
    

    【讨论】:

    • 感谢您的回复。这样做只会恢复 CSS 部分。我正在使用图像来显示自定义 404 消息。现在页面中的所有图像都损坏了,包括徽标。在页脚中,我有一堆需要随时显示的图像。甚至它们都坏了。顺便说一句,所有链接都是相对的。 404 页面也共享公共包含,就像网站的其他页面一样。因此,此 404 页面的任何更改都将自动应用于其余页面。这个可以解决吗?
    • 图像与 CSS 相同:您在 404.php 中引用的任何内容都必须是绝对的,才能从任何 URL 正确显示。如果您有包含图像或引用 CSS 的常见包含,我会认为它们已经生成了绝对 URL。
    • 我的 inc_header.php 页面中有以下代码,如果我尝试将其包含在我的 index.php 页面中以显示徽标,那么徽标会在 index.php 页面上完全消失(当我在本地主机上运行此页面):
    • 如果你将它部署到本地主机的子目录,它的行为会有所不同,比如http://localhost/test/myapp/index.php。然后绝对寻址会发生变化,您需要/test/myapp/ 前缀来添加所有内容。这通常可以通过使用带有前缀的变量来实现,并在多个页面中生成的每个内部 URL 前面回显它(例如页眉/页脚包含的那些)。
    • 我想我在这方面除了按照您的建议实现变量之外别无选择。我会做的。非常感谢您的帮助。欣赏它。
    【解决方案2】:

    因为错误 404 页面必须能够从我的 404.php 仅包含的任何 URL 运行

    <?php
    header("Location: http:/homepage.de");
    ?>
    

    这样它会重新定位到基本 URL。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签