1

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

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

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

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

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

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

谢谢。

4

1 回答 1

4

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

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

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

<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>
于 2013-01-22T18:27:18.573 回答