【问题标题】:404 redirect using .htaccess使用 .htaccess 进行 404 重定向
【发布时间】:2013-06-24 19:48:29
【问题描述】:

我想在我的 .htaccess 文件中设置一个规则,以便任何输入的 url,因为没有这样的文件而导致 404,自动重定向到网站的主页: index.php

我的 .htaccess 文件如下所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^queenslandbeerweek.com.au$ [NC]
RewriteRule ^(.*)$ http://queenslandbeerweek.com.au/$1 [L,R=301]
ErrorDocument 404 /index.php 

这会导致 index.php 文件显示但已损坏并在地址栏中留下错误的 URL。

我在另一篇文章的回答中读到,它与将错误的 URL 作为参数传递有关,导致页面无法正确加载,因为页面从数据库调用数据并且传递了错误的 URL作为 index.php 的参数,但没有提示解决方案是什么。

我希望发生的情况是,如果在地址栏中输入了不正确的 URL,或者如果链接到一个不存在的文件,则完全忘记该文件,删除所有内容,然后转到主页 index.php。

index.php 从数据库调用数据

这可以使用 .htaccess 文件吗?

我的另一个网站也有同样的问题。

任何帮助将不胜感激。 干杯,艾尔。

【问题讨论】:

  • 旁注:为了 SEO 目的和可用性,建议使用 404 页面而不是重定向。

标签: .htaccess http-status-code-404


【解决方案1】:

我不认为您可以直接重定向错误文档,但您可以捕获不存在的文件和文件夹

!-f 表示不是文件 !-d 表示不是目录,$1(.*) 中的任何内容(url 中的路径)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php?errorurl=$1 [R=301,L]

【讨论】:

  • 感谢 Patrick 在聊天窗口中帮助我。我在没有 ?errorurl=$1 的情况下使用了上述内容,因为我不需要捕获错误的 URL。再次感谢。
【解决方案2】:
ErrorDocument 404 /404.php

您可以将 404 错误模板放置在您想要的任何位置。例如,您可以将所有错误消息放在名为 errormessages 的文件夹中

ErrorDocument 404 /errormessages/404.php 

【讨论】:

  • 他已经知道如何设置错误文档,因为您可以看到他在他的问题中使用它。他想要的是它重定向到另一个位置,这样导致 404 的 url 不再显示。只需设置错误文档,它就会在相同的 404 url​​ 处呈现该文档。
  • 嗯。这让我思考。我是不是走错了路。我是否应该制作一个只有立即重定向到主页的自定义 404.php 文件
  • like: header('location: index.php');还是什么?
  • @Almeister9 检查我的答案,你必须捕获不存在的文件/文件夹
猜你喜欢
  • 2015-03-20
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2011-01-22
  • 2013-05-17
  • 2015-03-24
  • 2018-09-05
相关资源
最近更新 更多