1. 引导文件
索引文件是模块化程序中的主要脚本,它是唯一被加载进web浏览器的页面。
这个构建法的技术术语叫做引导文件(bootstrap file), 它通常也是基于框架网站系统的常用方式。
它组合适当的部分来形成完整的web页面。
2. include($_GET['p']); // this is not safe
没有验证$_GET('p')的值,是极度不安全的。
3. 配置Apache, 可能会用到
httpd.conf, Apache全局配置文件,放置在conf目录内,它用于规范这个Apache网站服务器的运行规则。
.htaccess, 放置在web目录内,它用来规范在当前目录和子目录内Apache如何运行。
任何可以使用.htaccess文件来完成的功能都可以在httpd.conf文件中使用一个Directory标签来实现。默认情况下,Apache不会在Web浏览器中显示.htaccess文件,这是一种聪明的安全策略。
4. 通过Apache的mod_rewrite模块来实现URL的重写。在.htaccess文件中首先检查该模块是否加载并且打开重写引擎。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule somepage.php otherpage.php // 测试mod_rewrite功能是否工作正常
</IfModule>
5. PCRE, Perl-compatible Regular Expressions
6. 当使用mod_rewrite的时候,使用相对路径引用图片、JavaScript、样式表文件等外部资源时可能会导致问题,必须使用绝对路径来引用外部资源。
http://localhost/ch02/about/
例如,对于以上URL中的地址,浏览器会认为当前页面位于about目录内,对于页面内的css文件引用,若使用相对路径,就会找不到对应的位置。
7. web browser and agent server are accustomed to using cache pages. 使用缓存的目的是提高网络性能。缓存页面是保存页面的内容(或部分内容,e.g. an image or video)的一种方式,然后在产生请求时提供这个保存的页面版本,而不是服务器上的版本。
当服务器上的页面版本比缓存的页面版本新的时候,终端用户可能获取不到最新的页面。
利用PHP的header()函数可以调整缓存,
Last-Modified(最后修改时间)
Expires(过期时间)
Pragma(编译提示)
Cache-Control(缓存控制)
header("Last-Modified: ". gmdate('r', $max));
header("Expires: " . gmdate("r", ($max+$interval)));
header("Cache-Control: max-age=$interval");