PHP 404响应和重定向

时间:2013-01-22 18:02:56

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

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

据我了解,如果找不到页面,则会将错误发送回浏览器并显示404页面。用户可能会或可能不会意识到此“错误”。

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

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

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

我希望网址不受影响,并保持为用户输入。

感谢。

1 个答案:

答案 0 :(得分:3)

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

如果没有找到内容,则传递内容或错误页面的实例是Web服务器。 如果要在PHP中处理该逻辑,可以告诉Web服务器将所有请求传递给相同的 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>