【问题标题】:htaccess 404 redirect not workinghtaccess 404重定向不起作用
【发布时间】:2013-01-30 21:31:18
【问题描述】:

我正在尝试使用 ErrorDocument 404 /404.html 为我的网站设置自定义 404 页面,但是当我添加此页面时,转到 domain.com/dslkjflsdkjflskdjf 不会重定向到 404 页面。相反,它会重定向到我的主页,页面上的大部分内容都已损坏。

我想知道这个 mod_rewrite.c 模块是否是造成这种情况的原因,我尝试过修改它(取出 L,在模块内添加重定向等)但没有运气。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>

【问题讨论】:

    标签: .htaccess mod-rewrite http-status-code-404 errordocument


    【解决方案1】:

    对此我不确定,但我认为您的服务器无法识别 404 错误,因为每个请求都被重定向到您的 index.php。您必须在 index.php 中确定是否存在 404 错误并使用 header() 函数发送标头。

    【讨论】:

    • 有什么方法可以重写那个模块,这样我就可以使用 ErrorDocument 来捕获 404 了吗?
    • 我不知道你的 index.php 做了什么,但我认为它控制输出并从数据库动态加载它,所以只有你的 index.php 会知​​道是否没有可用的内容。所以你的索引。 php 必须捕获错误并显示错误页面。因此,在您的 index.php 中,如果用户请求的内容不存在,则发送带有 header('HTTP/1.0 404 Not Found') 的 404 错误;然后包括你的 404.php
    • 我已经尝试过您的解决方案,但是模块指令在 PHP 有时间向标头发送 404 错误之前执行。
    • 是的,不是对现有文件的每个请求都将重定向到您的 index.php,并将原始请求作为查询字符串中的参数。所以如果你想显示用户请求的内容,index.php 应该处理这个。如果 index.php 查找数据库或您使用的任何来源,并注意到它们没有满足请求的内容,它必须向客户端发送 404 标头。也许你可以解释一下你的 index.php 究竟做了什么或发布它(如果它不是太长的话),以便我可以进一步帮助你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2018-02-18
    • 2014-04-20
    • 1970-01-01
    • 2015-09-25
    • 2011-03-13
    • 2015-03-07
    相关资源
    最近更新 更多