投稿 评论 顶部

Apache配置伪静态

佚名 网络安全
Apache配置伪静态

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

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

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

? ? ? ? ?编辑?下的httpd.conf文件:

? ? 2、编写伪静态规则

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

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

? ? 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

? ? ? ? ??

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

? ? ? ? ?4.html这个文件是存在的

? ? ? ? ? ?

? ? ? ? ? ?

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

? ? ? ? ? ?

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

?

?