.htaccess 不重定向到 404.php 而是显示页面名称

Posted

技术标签:

【中文标题】.htaccess 不重定向到 404.php 而是显示页面名称【英文标题】:.htaccess not redirecting to 404.php instead shows page name 【发布时间】:2013-03-26 23:15:47 【问题描述】:

我正在尝试为我的网站创建一个自定义 404 页面,并且在使用此规则的根目录中有 .htaccess 文件

ErrorDocument 404 404.php //I want to redirect to 404

因此,当我将 home.php 之类的有效文件名更改为 home1.php 时,它不会重定向我,而是在该页面上回显 404.php

旁注:404.php 仅在根目录中

【问题讨论】:

尝试给它一个尾部斜杠,所以:ErrorDocument 404 /404.php @Nikola 试过但没有运气 【参考方案1】:

应该这样做

RewriteEngine on
ErrorDocument 404 http://www.yoursite.com/404.php

【讨论】:

Vuhooooooooo 我在本地,directory/404.php 为我工作,+1,很快就会将您的答案标记为正确 我也在本地,但如果我输入这样的 ErrorDocument 403 /index.php,它会将我重定向到 xampp index.php。我的.htaccess 在我的网站文件夹中。请帮忙..【参考方案2】:

在您的.htaccess 文件中,您应该可以使用:

RewriteEngine on
ErrorDocument 404 /404.php

您可以使用此方法设置额外的错误文档,但我会将它们放在单独的错误目录中:

ErrorDocument 400 /errors/400.php
ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php

【讨论】:

【参考方案3】:

您可以使用 htaccess 对 404 个旧页面执行以下操作

RewriteEngine on
ErrorDocument 404 /404.php

但我个人会推荐

RewriteEngine on
RewriteRule home.php /home1.php [R=301,L]

因为这会执行从旧页面名称到新页面名称的 301 重定向,所以任何缓存的搜索引擎结果仍然会出现在正确的页面上,而不是遇到 404

【讨论】:

【参考方案4】:

在我的情况下,使用 Ubuntu 发行版,如果指令 ErrorDocument 位于 htdocs 目录或其他位置的 .htaccess 中,则该指令无效:事实证明,它应该放在正确的 /etc/apache/sites-enabled/*.conf 中文件,在 <VirtualServer> 指令内(例如,如果网站提供 https 页面,则在指令 <VirtualHost *:443> 内)。

【讨论】:

以上是关于.htaccess 不重定向到 404.php 而是显示页面名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 .htaccess 重定向 404 而不重定向尾部斜杠

.htaccess 重定向显示 404.php 文件的绝对路径。如何避免这种情况?

在 apache 中创建一个不重定向的重写查询字符串

重定向进入空白页面而不重定向到路由 Laravel 5.8

Spring Security:会话过期而不重定向到过期网址?

使用 Azure Active Directory 身份验证而不重定向到 Microsoft