1: 什么叫"伪静态页面"
简单说就是用户访问动态文件时, 浏览器实际显示给用户的是静态url.
用户在浏览器上输入一个url, 假设为:http://www.rbyoung.com/instances/index.html, 浏览器返回给页面相
应的内容。按照通常的情况, 可以这样解释这个过程: 首先www.rbyoung.com所在的主机空间上有一个instances
文件夹, 该文件夹下有一个index.html页面, 用户访问该url时会通过域名解析等过程自动定位到这个index.html
文件, 然后apache服务器解析这个文件的内容返回给客户端.
但是如果http://www.rbyoung.com/instances/index.html这个网址是通过伪静态来实现的, 情况将会有什么不同呢?
这里我们先假设我们是伪静态php页面(还有伪静态asp, jsp, aspx等)
那么实际的情况可能就是这样:在instances文件夹下并没有index.html文件, 而是有一个index.php页面,
当用户访问含有index.html的url时, apache会根据rewrite规则将index.html定向为index.php, 就是将index.php运行后
的内容返回给客户端, 但是同时在浏览器端并不改变url的呈现方式。这样, 就会让用户不知道他实际是在访问一
个动态页面。 这种方式就叫做"伪静态"页面。
2:让apache支持mod_rewrite
在LAMP体系中, 实现伪静态的方式是通过让apache支持mod_rewrite.so模块来实现的。
这个模块的功能就是支持url重写。注意,支持mod_rewrite是"伪静态"的必要而非充分条件.
在phpinfo页面上查找mod_rewrite, 如果它存在于"Loaded Modules"单元格右边的单元格中, 说明apache启用
了mod_rewrite模块, 无需对apache重新进行配置, 否则就要打开httpd.conf页面(这个页面在apache文件夹下
的conf子文件夹中), 修改这个文件并重启apache.方法如下:
a: 打开httpd.conf文件, 查找"rewrite_module", 将该行前面的#去掉,保存文件;
b: 重启apache, 再次访问phpinfo页面, 查找mod_rewrite, 查找到的话, 说明配置成功.
3: 开启rewrite引擎
开启mod_rewrite功能后, 并不表示apache就能实现对页面的"伪静态"了, 因为伪静态是伴随着对url的rewrite(重写)
同时进行的, 这个重写又需要两个条件:
第一:开启重写引擎;
第二:设置重写规则(Rewrite Rule)
二者缺一不可,开启重写引擎又有两种方式:
一、在httpd.conf文件中修改相关配置(默认配置是关闭的)
方法为:
将httpd.conf文件中的
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
修改为:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
二、在.htaccess文件中临时开启
方法为:
RewriteEngine on
这两种方式的区别与联系如下:
(1)区别:在httpd.conf文件中修改配置可以让apache管理的所有站点都自动开启重写引擎, 而在.htaccess文件中临时
开启的话,就只能作用在当前文件夹及其所有子文件夹下, 不能作用在上层文件夹和其他文件夹下;
(2)联系:都能开启重写引擎
4: URL重写规则
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
RewriteRule ([0-9]{1,})$ index.php?id=$1
我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!
好吧,现在我们可以实现伪静态页面了,写规则:
RewriteEngine on
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$ index.php?action=$1&id=$2
([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
5: 总结"伪静态"的条件
令 A = "让Apache支持mod_rewrite“
^A = "让Apache不支持mod_rewrite"
B = "在httpd.conf中修改AllowOverride None 为 AllowOverride All”
^B = "保持httpd.conf中AllowOverride None的默认配置"
C = "在.htaccess文件中设置 RewriteEngine on"
^C = "在.htaccess文件中设置 RewriteEngine off"
*C = "在.htaccess文件中不对RewriteEngine进行设置"
则:
^A && * : 不支持伪静态
A && B && C: 支持
A && B && *C: 支持
A && B && ^C: 不支持
A && ^B && C: 支持
A && ^B && ^C: 不支持
A && ^B && *C: 不支持
6: 创建.htaccess文件的方法
(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。
你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。