.htaccess的url重写

SJY发表于:2013年07月28日 00:00 • 阅读:

将本来动态的网页的网址进行伪静态化改造,不仅对用户体验有帮助,更有利于提升对搜索引擎收录页面的友好程度。编辑 .htaccess 文件通过操控 Apache 环境实现伪静态,而 Apache 将用户的访问请求按照已定义的网址重写规则,获取被改写网址对应的原始页面内容,反馈给用户并输出。

.htaccess 字符串匹配规则是正则表达式,推荐?正则表达式30分钟入门教程

我们来看看常见的 Discuz! 7.x 论坛程序的网址伪静态化 .htaccess 文件内容:

RewriteEngine On
RewriteBase /bbs
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

“RewriteEngine On”,开启 Rewrite 规则开关;
“RewriteBase”,指后文的 RewriteRule 重写规则生效的相对路径;
“RewriteRule”,定义一条重写规则。后面的字符串通过正则表达式进行匹配,匹配字符串以 ^ 开头并以 $ 结尾,替换字符串中 $1 指被第一次被匹配成功的字符串。

此处重写规则的功能:比如当访客访问 http://www.example.com/bbs/forum-21-3.html 时,网站内容将显示为 http://www.example.com/bbs/forumdisplay.php?fid=21&page=3 的内容(访问被重写网址时,网址不会被重定向/跳转)。

另外,如果在某条重写规则末尾添加 [R] 或 [R=301] 等时,访客访问被重写网址时,客户端将被执行重定向(跳转)到重写后的网址。

 

欢迎转载,但请保留原文地址 http://www.sjyhome.com/apache/url-rewrite.html

回复(0)