搜索引擎对动态页面不是很友好,像我的博客之前显示文章都是用article.php带查询方式,也就是形如article.php?a=12的方式。但是搜索引擎对后面的查询字段通常忽略,把所有article.php当作一个页面,因此多个页面无法被搜索引擎捕获。我们可以通过重写url将地址静态化,改成12.html等形式,这样浏览器就可以很容易的区分不同页面从而抓取。伪静态方法有很多,我这里用的是.htaccess方法,利用apache的rewrite模块进行,里面涉及到非常简单的正则表达式知识。这个方法主要是创建并编辑.htaccess文件。一、创建.htaccess因为我通常在linux下开发web因此没有无法生成.htaccess文件的困扰。对于windows用户,可以新建xx.htaccess然后在cmd里copy xx.htaccess .htaccess得到这个文件。这个文件可以用任意一款文本编辑器编辑。二、书写rewriterule这里首先打开.htaccess文件,然后输入如下文本:RewriteEngine OnRewriteBase [path]RewriteRule [from] [target]其中[path]是指从web根目录开始,要重定向的文件所在目录,比如本站,article.php在blog目录下因此[path]写成/blog。[from]是你希望用户在浏览器里输入的url形式,比如我这里希望用户输入 一些数字.html的形式,那么[from]写成^([d]+).html。这里的^表示目标串的开头,表示从开头匹配,一对圆括号的作用是今后引用它,而一对方括号的意思是将它包括的东西算作一组,后面的加好表示前面的一个或一组模式出现1次或以上次。因为.在正则表达式里有特殊含义,因此要加将其转义。[target]是要转向的文件,因此[target]在我这里是article.php?a=$1。这里的$1就是对前面的小括号的模式的引用,前面如果出现多个小括号就是匹配第一个,$2就是第二个,以此类推。值得注意的是,如果页面内大量链接以及图片的引用用的是相对路径形式,如x.jpg,需要保证重定向后目录层级不变,否则会造成链接失效,图片无法显示的问题。这个问题很容易理解,因为重定向发生在服务器端,因此浏览器并不清楚目前的目录到底在哪里比如在浏览器里输入地址www.domain.com/a/b/c.html并在服务器端指向www.domain.com/index.php?a=a&b=b&c=c文件,这是就会出现问题。原因是浏览器在查找相对路径x.jpg时,会在www.domain.com/a/b/目录下查找,而事实上并不存在这样一个目录。这个问题的另外一个解决办法是所有的链接都采用绝对路径形式,不过这样对今后网站转移和维护都会造成困扰。如果网站会频繁转移,又想用绝对路径,那就只能定义一个全局变量或者常量使其值为”http://www.domain.com/”这样,只要把这个变量在需要链接的位置的相对路径前输出即可。网站转移的时候只要修改这个全局变量。三、上传.htaccess文件书写好这个文件之后需要将这个文件上传到服务器。目前国外的linux主机几乎都支持这个功能,因此只要把这个文件传到想要作用的目录下即可。四、.htaccess的其他功能这个文件功能其实很强大,也可以自定义404错误等各种错误页面。网上这些资料很多。这段时间我会将站内几乎所有的链接都静态化,这可能会导致很多错误,因此只能在错误中前进了。