【问题标题】:PHP 404 response and redirectPHP 404 响应和重定向
【发布时间】:2013-01-06 01:40:54
【问题描述】:

我知道我可以使用 .htaccess 简单地设置一个 404 错误页面。

据我了解,如果找不到页面,则会将错误发送回浏览器并显示 404 页面。用户可能知道也可能不知道这个“错误”。

我想做的是让用户输入page1.php、page2.php、page3.php等,然后转到分别打印page1、page2、page3等的页面。

原因是page1、page2、page3等的逻辑非常相似。我认为将用户发送到同一页面可能更容易,然后使用PHP服务器变量计算要做什么:确定如果这是一个有效的页面,然后抛出 404 错误或打印正确的消息。

这可能吗?还是只是一个愚蠢的想法?

我希望 url 不受影响并保持用户键入的状态。

谢谢。

【问题讨论】:

  • 我没有得到你想要做的事情......
  • 您使用的是哪个网络服务器?阿帕奇?

标签: php apache redirect http-status-code-404


【解决方案1】:

这绝对不是一个愚蠢的想法。

提供内容的实例,如果没有找到内容,则提供错误页面,是 Web 服务器。 如果您想在 PHP 中处理该逻辑,您可以告诉 Web 服务器将所有请求传递给 same PHP 文件。然后,您可以使用$_SERVER 变量来确定用户请求的内容并提供内容并发送正确的状态代码(例如404)。

在 Apache 中,如果您使用的是 2.2.16 或更高版本,则可以定义 Fallback Resource。这会将对不存在文件的请求重定向到指定文件。

<Directory /var/www/my_blog>
  FallbackResource index.php
</Directory>

在旧的 Apache 版本中,您可以使用 mod_rewrite 来重定向请求:

<Directory /var/www/my_blog>
  RewriteBase /my_blog

  RewriteCond /var/www/my_blog/%{REQUEST_FILENAME} !-f
  RewriteCond /var/www/my_blog/%{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [PT]
</Directory>

【讨论】:

  • 这听起来就像我想做的。我怎样才能做到这一点?或者我需要在 Apache 文档中查找什么?我看过那里,但我不确定我在找什么。
  • 优秀。正是我想要的。非常感谢。
猜你喜欢
  • 2014-12-04
  • 2011-09-15
  • 1970-01-01
  • 2015-03-20
  • 2023-04-11
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
相关资源
最近更新 更多