首页 > 代码库 > 伪静态详解笔记

伪静态详解笔记

1.检测Apache是否支持mod_rewrite

通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有

apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。

如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。

如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。

#启用我们的rewrite模块

LoadModule rewrite_module modules/mod_rewrite.so


2.在httpd.conf中配置虚拟主机

# Virtual hosts 启用虚拟主机

Include conf/extra/httpd-vhosts.conf


3.httpd_vhosts.conf文件中,配置相应的选项.详细讲解

<VirtualHost *:80>

    DocumentRoot "C:/myenv2/apache/htdocs/static2"

    ServerName www.hsp.com

    <Directory "C:/myenv2/apache/htdocs/static2">

#403错误提示,可以阻止人访问.

#Allow from All

#如果文件目录在apache目录外面,注释掉optinos 则,不能列表.

#options +Indexes

#不让列出列表配置

#options None

#设置欢迎页面

#DirectoryIndex  aa.html

#下面这个表示可以去读取 .htaccess文件,也可以直接在虚拟主机中配置.

#Allowoverride All

RewriteEngine On

RewriteRule news-id(\d+).html$ searchNews.php?id=$1

#如果匹配不到,可以指定一个错误页

errorDocument 404 /404.php

#这里可以设置多个重写的规则

#RewriteRule news-id.html$ error.php

    </Directory>

</VirtualHost>


4、vhost文件中配置 

测试一下虚拟主机是否配置ok

 如果我们的虚拟主机,没有指定访问的权限,则以上级目录的权限为标准,如果指定了,则以自己的配置为准

我们来看看如何配置我们的rewrite 这个规则特别说明该规则实际上就是一个正则表达式这个表达式可以写 httpd-vhost.conf 也可以写在 .htaccess 文件.

最后的配置结果如下:

<VirtualHost *:80>

     DocumentRoot "C:/myenv2/apache/htdocs/static2"

        ServerName www.hsp.com

    #Directory这个 段,主要用处指定,该目录的访问权限

         <Directory "C:/myenv2/apache/htdocs/static2">

    #如果你不想让别人访问你的网站Deny from 211.11.89 或者 Deny from all

        Allow from all

    #不列出该网站的文件列表 Options None|+indexes

        Options +indexes

    #设置网站默认的首页面 http://www.hsp.com

        DirectoryIndex abc.html

    #配置统一的 404页面

        errordocument 404 /errro.html

        RewriteEngine On

        RewriteRule news-id(\d+)\.html$  showNews.php?id=$1

           </Directory>

</VirtualHost>



 实现伪静态的第二种方式

在文件夹下,直接通过写 .htaccess 文件来指定重新规范

步骤 a. 首先我们在 配置文件中添加 

<IfModule rewrite_module>

RewriteEngine On

#rewrite 伪静态的规范可以有多个,他是依次匹配. if else if

RewriteRule news-id(\d+)\.html$  showNews.php?id=$1

</IfModule>

 

实际应用说 ,我的网站有两个文件,放入图片一个文件夹下图片是公开的,而另一文件夹图片是私有的,不可以直接访问,怎么处理?

 

处理的方法是在每个文件夹下 创建一个文件  .htaccess , 可以这里指定哪些ip可以访问我们的资源.!!!->测试没有过

我们就在 www.hsp.com 这个主机下去测试 

 

伪静态的优缺点分析:

优点: 1. SEO 2. 防止注入 3. 占用空间小

缺点: 1. 因为没有真正的静态化,因此每次请求是需要查询数据库