一个简洁的URL地址不光好看,同时针对搜索引擎有很好,这一点做SEO的朋友们都比较清楚,虽然比如Google承诺对动态URL与静态URL在收录上没有区别。不过经验告诉我们,静态URL地址还是优于动态URL的,至少可以减少许多重复页面(当Discuz论坛采用动态地址会出现多个不同地址的同一个页面)。
那从静态地址来区分也分为真实静态和伪静态两种,真静态需要CMS程序支持为每一个页面生成一个html的独立页面,这样可以大大降低服务器的压力;伪静态纯粹是为了像SE示好以及具观赏性,啊哈哈。
这里只对采用Apache自带的mod_rewrite 模块,URL-rewrite 实现的伪静态做下介绍:
效果如:http://127.0.0.1/?p=123 动态网页,URL-rewrite 为 http://127.0.0.1/123.html
在这里拿 WordPress 常见的 .htaccess 文件的解析方式为例:
1. 打开 Apache(v2.x版本) 的 Rewrite 模块(mod_rewrite)
先要修改Apache 目录下 conf/httpd.conf,找到
LoadModule Rewrite_module libexec/mod_Rewrite.so
这一行,如果前面有 # 将其去掉;
继续找到
<Directory />
Options FollowSymLinks
AllowOverride None <——将None改为ALL 保存httpd.conf 并重启Apache
</Directory>
2. 创建一个文本文件,复制以下内容
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
保存为 htaccess.txt 上传到域名根目录并修改为 .htaccess即可
测试一下,是不是OK了?
当然还有另一种方法是直接把 .htaccess 重写规则复制到 httpd.conf 中,个人觉得没有根据不同网站程序修改 .htaccess 来的方便。这都因人而已啦,反正只要有 Apache 就可以实现伪静态,虚拟空间的话就不知道空间商给不给你打开mod_Rewrite了。
[...] 用Apache Rewrite简单实现URL重写 [...]