我知道我可以使用.htaccess设置一个404错误页面。
据我了解,如果找不到页面,则会将错误发送回浏览器并显示404页面。用户可能会或可能不会意识到此“错误”。
我想做的是允许用户输入page1.php,page2.php,page3.php等,然后转到分别打印page1,page2,page3等页面。
原因是page1,page2,page3等的逻辑非常相似。我认为将用户发送到同一页面可能更容易,然后使用PHP服务器变量计算要做的事情:确定如果这是一个有效的页面,然后抛出404错误或打印正确的消息。
这可能吗?或者只是一个愚蠢的想法?
我希望网址不受影响,并保持为用户输入。
感谢。
答案 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>