利用htaccess文件可以很好的进行站点伪静态,并且形成的目标地址与真正的静态页面几乎一模一样,由于伪静态必须要完全根据不同的站点进行不同的设置,因此,我们仅能简单介绍其原理,给出几个常用程序的示例:
方式一:.htaccess版本伪静态规则(运行环境是Apache,或者是IIS,ISAPI Rewrite版本为3.0或者以上)
apache只能用.htaccess来做伪静态,而为什么IIS的环境也要用到.htaccess呢?这是因为ISAPI Rewrite版本为3.0或者以上只支持.htaccess的格式。
如果是老手,可以直接用ISAPI Rewrite版本为3.0把httpd.ini转换成.htaccess格式的。
在网站根目录新建立一个.htaccess的文件,把以下代码放进去即可。
例子:
RewriteEngine On
RewriteBase /
RewriteRule ^book/([0-9]+).html$modules/article/articleinfo.php?id=$1
RewriteRule ^list/([0-9]+)_([0-9]+)/$modules/article/index.php?page=$2&class=$1
RewriteRule ^top/([a-z]+)_([0-9]+)/$modules/article/toplist.php?page=$2&sort=$1
方式二:Apache下伪静态设置
请首先咨询您的空间服务商,空间是否支持Rewrite以及是否支持对站点目录中.htaccess的文件解析,否则即便按照下面的方法设置好了,也无法使用。
VPS用户可以自行设置(需要服务器支持Apache的Mod_Rewrite功能)
1、首先您需要找到Apache安装目录,之后找到conf目录下的httpd.conf文件。
2、将下面的代码复制到httpd.conf文件中,注意将/auto替换为您的网站的实际安装目录。
Options FollowSymLinks
AllowOverride All
3、在httpd.conf中搜索LoadModule rewrite_module,将该行前面的#号删除。如果您的Apache是1.3.x版本还需要查找AddModule mod_rewrite.c,请将前面的#删除。
4、保存httpd.conf。
5、设置您网站的伪静态规则.htacces复制到auto根目录下。
6、重新启动Apache。
方式二:windows vsta以上版本的操作系统伪静态设置
1、打开IIS创建一个站点,当然也可使用默认的站点。
2、选中站点,进入站点的功能主页。如果安装了URL_Rewrite组件,就可以在IIS一栏中看到URL重写的功能。这个就是微软伪静态组件。
3、选中URL重写,并双击进入该组件设置页,可看到已经重新的URL规则,也就是伪静态规则。在右侧则有设置URL重写的操作。
4、点击右侧的导入规则(注意在做此步操作前为了保证我们获取到的规则没有任何其他内容在里面,请先将站点根目录下的web.config文件删除。)。
5、进入导入规则页,可在要导入的规则处进行选择.htaccess文件进行自动导入,也可以将.htaccess文件中的规则复制后粘贴到下方的重写的规则文件。
6、导入后,可以已转换的规则中看到转换完成后的规则。
7、确认已经转换的规则全部都是绿色的勾后,说明规则已经没有问题可以正常使用。最后点击右侧的应用生成web.config文件,将此文件直接通过ftp上传至空间的网站根目录中。
示例解释:
RewriteEngine On
#RewriteBase /
RewriteRule ^look-(d+).html$look.php?id=$1
RewriteRule ^(d+).html$index.php?id=$1
PHP利用htaccess文件实现伪静态
RewriteEngine On 表示将Rewrite开启
RewriteBase / 指定重写规则的根目录,一般不需要所以已经用#注释掉了
RewriteRule 后面跟重写规则,正则表达式以^开始以$结束(有多条规则则写多个RewriteRule)
规则第一条表示将
http://127.0.0.1/look.php?id=3
转换为
http://127.0.0.1/look-3.html
第二条规则将
http://127.0.0.1/index.php?id=3
转换为
http://127.0.0.1/3.html