Apache的Rewrite与404错误页面的区别

王志勇 发表于 2009年07月26日 17:04

Rewrite与404错误页面各有优势。它们的一些区别:
  1. 404错误页面的优势可能在于不用调用Rewrite模块,Rewrite需要调用此模块。因此404错误页面可能会更节省资源,使大型网站的速度更快一些。我编写的静态化网页,目前大多数都是使用404错误。
  2. 使用404错误页面,不能被POST和GET。例如305.php?name1=auiou,假如此305.php页面是用404错误产生,则此$_GET['name1']的值不会被读取。其它页面的<form>使用POST方法将action指向此404错误产生的305.php,也无法被接收,例如<form method=post action=305.php>所发送的信息无法被305.php接收。
    如果您希望产生的虚拟路径如305.php被POST和GET,使用Rewrite可解决。
  3. 404错误页面的开头有一些Linux空间必须写入这句<?Header('HTTP/1.1 200 OK');?>,有一些Linux空间则必须写为<?Header('Status: 200 OK');?>才可以被搜索引擎收录,否则会被认为是404页面。调试时,可以在网上搜索“404 检测工具”进行测试。
    Rewrite是否需要写语句,我还没有测试过。
  4. 404错误页面的规则相对不严格,因此有更好的适应范围。Rewrite相对更严格,例如305.html与305-1.html需要写2个重写规则;使用404错误页面只要一个规则即可。这也是我使用404错误,而不使用Rewrite的另一个重要原因。

5条评论:
1   freetao 2009-07-27 17:50
看不太懂。
2   华晨 2009-08-02 22:44
apache接收到一个不存在的文件,rewrite给index.php处理,经过查询数据库,没有这篇文章,但后要返回404错误该用什么代码?就是header里面应该用什么?谢谢!
3   自由勇 2009-08-02 22:51
404我没有试过,把上述的200 OK换成404 Not Found测试一下:
调试时分别用<?Header("HTTP/1.1 404 Not Found");?>,和<?Header("Status: 404 Not Found");?>进行测试。

<?if (……) Header("HTTP/1.1 404 Not Found");
else Header("HTTP/1.1 200 OK");?>

4   自由勇 2011-02-25 12:23
Trackback来自《全能空间能够实现静态化(伪静态)(已测试成功)

如实际测试,使用404页的页面,既不能获得地址栏的GET,也不能接收POST,但Apache的Rewrite页既可以用GET,也可以用POST。

5   自由勇 2018-11-06 07:22
Trackback来自《VPS的快速安装和PHP调试导航页

虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写