Apache配置伪静态

注意:本文中关于Apache的配置修改,一定要记得重启Apache服务

伪静态的实现有多种方法,比如通过获取path_info信息使用php逻辑来达到伪静态,使用Apache提供的rewrite来达到伪静态,本文主要对Apache提供的rewrite实现伪静态做个记录

1、开启Apache服务的mod_rewrite模块:

编辑 Apache配置伪静态-LMLPHP下的httpd.conf文件:Apache配置伪静态-LMLPHP

2、编写伪静态规则

具体的规则的写法可以学习Apache手册中url重写:http://apache.jz123.cn/rewrite/rewrite_guide.html

规则写在什么地方?可以直接写在httpd.conf文件中,也可以写在项目文件中的 .htaccess文件中,当要写在 .htaccess文件中时记得在httpd.conf文件中开启对应目录的AllowOverride Apache配置伪静态-LMLPHP

    3、我们使用 .htaccess 的方式(虽然手册中说这会影响Apache的性能,但是我们是测试,所以为了不影响其他项目,就采用这种方式)

编写 .htaccess 文件

1
2
3
4
5
6
7
8
9
10
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  # 判断是否存在请求的目录,
  RewriteCond %{REQUEST_FILENAME} !-d
  # 判断是否存在请求的文件,
  RewriteCond %{REQUEST_FILENAME} !-f
  # 如果上面请求的路径文件存在,直接执行请求文件,不存在就继续执行下面的规则
  RewriteRule ^detail/([\d]+).html$ detail.php?id=$1
</IfModule>

上面的规则意思是:当请求的文件存在时直接执行请求文件,当不存在时执行匹配最后的规则,进入到detail.php文件执行

4、当我们访问 http://localhost/statichtml/detail/3.html

因为 statichtml/detail/3.html 这个文件是不存在的,这时我们正真访问的其实是http://localhost/statichtml/detail.php?id=3

Apache配置伪静态-LMLPHP

当我们访问:http://localhost/statichtml/detail/4.html

4.html这个文件是存在的

Apache配置伪静态-LMLPHP

Apache配置伪静态-LMLPHP

此时直接直接执行文件返回:

Apache配置伪静态-LMLPHP

基本在Apache上的伪静态,简答的配置就是这样,当然你可以根据自己的需求将规则更加优雅。这完全都是你自己的需求和能力决定的。我只是在这里做一个简答的流程性的记录,只有配置的规则的一些只是在Apache手册上面有详细的说明。如果我们不是服务器管理员,只是一个很普通很普通的程序员,我们就先了解这么一个流程,以后工作中用到的时候好好看看手册,毕竟Apache的手册是很详细的。如果想着想着仔细的学习Apache手册,然后记住,这是很难的,如果我们不经常操作,很容易就忘记了。所以还是了解各流程然后需要时学习手册,这样最好。

 
05-11 18:01