(本文刊发于《网络安全和信息化》2019年第2期)
伪静态技术,也就是URL Rewrite(URL重写),它利用正则表达式将动态url地址进行修改,以静态地址的方式显示,使得url地址变得整洁,并可以提高收录检索机率。伪静态是相对真实静态来讲的,伪静态实质上还是动态的,在数据的处理过程上和动态的一样,当然这也是以牺牲运行效率为代价的。
通俗地说,伪静态是一种可以把文件后缀改成任何可能的一种方法,比如把php或aspx动态网页文件“伪装”成静态html文件,下面来介绍几种常用的WEB服务器中伪静态的配置方法。
一、Windows系统IIS7的配置:
在站点配置文件web.config中加入:
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^([0-9]+)-([0-9]+).html" />
<action type="Rewrite" url="/default.aspx?id1={R:1}&id2={R:2}" />
</rule>
</rules>
</rewrite>
</system.webServer>
这样重启动IIS后,当在地址栏中输入:http://xxx/123-4567.html时,实际会访问到:http://xxx/default.aspx?id1=123&id2=4567。
二、Windows系统apache的配置:
首先修改一下apache目录下的httpd.conf文件,用文本编辑器打开httpd.conf,查找以下内容:
#LoadModule rewrite_module modules/mod_rewrite.so
把这一行最前边的#(注释)去掉即可。
然后再打开站点配置文件vhosts.conf,按下面的内容进行配置:
<Directory "D:qhdedu e.qhdedu.net">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
RewriteEngine On
RewriteRule ([a-z]{1,})-([0-9]{1,}).html$ index.php?id1=$1&id2=$2
</Directory>
用http://xxx/qhdedu-20181205.html 这个地址访问时,实际会打开:http://xxx/index.php?id1=qhdedu&id2=20181205。
三、Linux系统apache的配置:
在Linux系统中,apache的伪静态设置除了按Windows系统中的方法进行设置外,还可以利用.htaccess文件。
在apache的配置文件vhosts.conf中应该有以下配置:
<Directory "/home/qhdedu/re.qhdedu.net">
Options Indexes FollowSymLinks #显示当前文件夹下的所有文件
AllowOverride All #允许重写apache默认配置, apache 能够正常的读取.htaccess 文件的内容
</Directory>
然后在站点目录中建立.htaccess 文件(Windows中是不允许有这样的文件名的),在 .htaccess 文件中输入内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule index.html$ index.php
RewriteRule index-([1-9]+[0-9]*).html$ index.php?p=$1
RewriteRule ^p([0-9]+).html$ index.php?id1=$1
</IfModule>
四、Linux系统Jexus的配置:
Jexus的配置相对来讲比较简单,只需在对应的站点配置文件如re.qhdedu.com中写入:
rewrite=([a-z]{1,})-([0-9]{1,}).html$ index.php?id1=$1&id2=$2
五、Linux系统Nginx的配置:
Nginx的配置如apache一样,也有两种方法。
1、在对应的站点配置文件,如re.qhdedu.com.conf 中加入以下配置:
location / {
rewrite ^/([0-9]+)-([0-9]+).html$ /index.php?&id1=$1&id2=$2;
}
2、引用 .htaccess文件。
首先在配置文件re.qhdedu.com.conf中写入:
include /home/wwwroot/re.qhdedu.com/.htaccess #即引入站点根目录中的.htaccess文件。
再建立一个 .htaccess 文件:
# .htaccess
# nginx rewrite rule
rewrite ^/([0-9]+)-([0-9]+).html$ /index.php?&id1=$1&id2=$2;
# end nginx rewrite rule
赵学作,河北科技师范学院副教授,研究方向:网站建设及软件开发。