【PHP 】 伪静态 - 2. 使用apahce的rewrite机制(1) 开启rewrite模块,配置虚拟主机,对目录访问权限的修改

在实际开发中,我们实现伪静态,用的更多的是rewrite机制,但是他任然是以正则技术为基础的。

我们来看看如何实现:

http://localhost/news.php?type=music&id=100

我们希望这个地址可以用下面的访问url来替换

http://localhost/new-music-id=100.html

 

原理图:

原先浏览器输入的网址会发送到apache服务器,然后apache会调用php模块来处理,最后找到你所想访问的页面; 如果在apahce, httpd.conf文件中开启rewrite机制,则apache会去查看可以匹配的规则,然后解析用户所输入的伪静态地址找到所想访问的php页面。

 

步骤开始:

1. 启用rewrite模块,在默认的情况下是没有启用的。

修改httpd.conf文件:LoadModule rewrite_module modules/mod_rewrite.so

确认是否启动成功<?php phpinfo();?>

 

2. 配置虚拟主机

http.conf的配置文件,打开它。

然后去修改http-vhost.conf文件:

<VirtualHost *:80>

    DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"

    ServerName  hsp.com

    <Directory>

                                #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限

                                #设置虚拟主机的错误页面,欢迎页面

    </Directory>

</VirtualHost>

 

3. 在hosts文件中配置ip和主机的对应关系

127.0.0.1 hsp.fi

 

4. 这时我们访问, hsp.fi/new.php

我们可以访问到页面.

 

一个重要的知识点:

在apache服务器中,如果某个文件夹,没有指定访问权限,则以上级目录的权限为准,如果他自己指定了访问权限,则以自己的权限为准。

在httpd.conf文件中可以看到htdocs的访问权限是Allow from all, 如果设置htdocs 的访问权限为Deny from  all, 并且不设定虚拟主机文件夹的访问权限,则这个文件夹就不能被访问到。但是,如果设置文件夹的访问权限为Allow from all,就可以访问到了,这是根据子目录为准的。

 

如果想不让别人访问,但是允许自己访问,可以这样配置:

Order allow, deny     // 这句话的意思是先看allow,再看deny

allow from 127.0.0.1

deny from all

 

如果想放行一个网段:

allow from 192.168.1

 

<VirtualHost *:80>
    DocumentRoot "C:/myPHP/htdocs/bigwebsite/staticPage/hsp"
    ServerName  hsp.fi
    <Directory "C:/myPHP/htdocs/bigwebsite/staticPage/hsp">
        #Directory配置节点,用于指定该目录下的文件或者是图片的访问权限
        #设置虚拟主机的错误页面,欢迎页面
        #这里可以指定是否让人访问, 如何这里没有指定访问的权限,则和上级目录的访问权限相同
        #Deny from all
        #不希望别人访问目录结构none, 如果允许别人访问则为Options indexes
        Options none
    </Directory>
</VirtualHost>

 

posted @ 2013-06-03 04:25  Zhentiw  阅读(285)  评论(0编辑  收藏  举报