最近在研究url的伪静态,弄明白了httpd.ini是IIS的配置文件,用于windows系统下的网站的伪静态化设置。 httpd.ini 功能类同于apache下的.htaccess,但是功能上比不过.htaccess,规则也相对缺少一些。通过学习httpd.ini的一些书写规则,我们可以给不支持二级目录绑定的空间来添加二级域名绑定子目录的功能(前提是空间支持httpd.ini)。
比如码农的代码笔记网站就是这样实现的。首先在空间主目录下建一个文件夹:web,然后用二级域名http://web.zhaicool.net来绑定这个目录,写上以下代码:
RewriteCond Host: web\.zhaicool\.net
RewriteRule /(.*) /web/$1 [L]
第一行代码意思就是声明作用,声明第二行代码的规则是针对域名web.zhaicool.net来执行的。至于“.”写成“\.”,大概就是转义作用吧。
第二行的RewriteRule后面就是具体的规则,规则用空格隔开,空格前的是地址栏里输入的内容,空格后面就是对应的空间目录文件。用例子具体说明就是:空格前的“/(.*)”部分就是地址栏里的输入形式,本例就是http://web.zhaicool.net,对应读取的文件则是“/web/$1”。后面的[L]指的是规则结束的意思。
啥?没看懂?那同学你就需要看一下正则表达式的相关知识了~
完整代码如下:
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteCond Host: web\.zhaicool\.net
RewriteRule /(.*) /web/$1 [L]
将以上代码粘贴至txt文件里,命名为httpd.ini,然后上传至网站根目录,就可以完成绑定。
输入http://web.zhaicool.net就可以访问到web文件夹里的内容,而且地址栏里不会显示“/web”。
当然,目前我自己也还在处于初级的学习阶段,对httpd.ini可以说根本不了解,只是会按照网上给的一些例子来照葫芦画瓢。虽然对于个人学习这种依样画葫芦的方式很不好,但是对于工作嘛,还是会有很大帮助的。
进阶:httpd.ini实现url伪静态化代码
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteCond Host: book\.zhaicool\.net
RewriteRule /shmwl.html /book\/shmwl.php [L]
RewriteCond Host: book\.zhaicool\.net
RewriteRule /shmwl/(.*).html /book\/bookshow\.php?title=shmwl&id=$1 [L]
上面的代码的意思就是我输入网址http://book.zhaicool.net/shmwl.html,实际上访问的是http://book.zhaicool.net/shmwl.php,也就是我网站根本不存在shmwl.html这个文件,只是用这段规则把php替换成html了。
访问http://book.zhaicool.net/shmwl/245.html,则实际上访问的是http://book.zhaicool.net/bookshow.php?title=shmwl&id=245(此处url参数有改动)。