网普技术论坛 网普科技  
» 游客:   网普主页 | 注册 | 登录 | 帮助
 

作者:
标题: Apache Rewrite 技术 上一主题 | 下一主题
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#1  Apache Rewrite 技术

Apache Rewrite 技术

--------------------------------------------------------------------------------

作者:忘了
  




Apache 特有的 rewrite 技术很好用,Vovo2000.Com 的
/gallery/
/vovo-gallery/
/phpbb2/
/linka/
...
都已经彻底嵌入 rewrite。 Rewrite 很简单的说,就是把类似
==> /phpbb2/viewtopic.php?t=1388&start=0
动态网页,转成
==> /phpbb2/viewtopic-1388-0.html
好处有:
1. URL 短一点,静态网址的接受度较高。
2. Search Engine 比较吃的下去~
3. 静态的网址会有比较好的 SE-BENCHMARK

===========================================
===========================================
在这里举 PHPBB2 2.0.3 的例子来说,一步一步来:

1. 把 Apache 的 Rewrite 打开(mod_rewrite)

2. 在 phpbb/include/page_header.php
的 // Generate logged in/logged out status 之前加入
代码:

ob_start();
function replace_for_mod_rewrite(&$s)
{
$urlin = array(
"'(?<!/)viewforum.php\?f=([a-zA-Z0-9]+)&topicdays=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewforum.php\?f=([a-zA-Z0-9]+)&mark=topics'",
"'(?<!/)viewforum.php\?f=([a-zA-Z0-9]+)'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&view=previous'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&view=next'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&postdays=([0-9]*)&postorder=([a-zA-Z]*)&start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]+)'",
"'(?<!/)viewtopic.php\?p=([0-9]+)'",
"'(?<!/)profile.php\?mode=viewprofile&u=([0-9]+)'"
);
$urlout = array(
"viewforum-$1-$2-$3.html",
"forum-$1.html",
"forum-$1.html",
"prev-topic-$1.html",
"next-topic-$1.html",
"viewtopic-$1-$2-$3-$4.html",
"viewtopic-$1-$2.html",
"viewtopic-$1.html",
"viewpost-$1.html",
"profile-$1.html"
);
$s = preg_replace($urlin, $urlout, $s);
$s = mb_ereg_replace( "viewtopic-([0-9]+).html&(.*)$", "viewtopic.php?t=\\1&\\2", $s);
return $s;
}


3. 在 phpbb/include/page_tail.php

代码:
在下列?#123;式之后:
$db->sql_close();

?#91;入:
$contents = ob_get_contents();
ob_end_clean();
echo replace_for_mod_rewrite($contents);
global $dbg_starttime;


在下列?#123;式之后:
ob_end_clean();

?#91;入:
echo replace_for_mod_rewrite($contents);
global $dbg_starttime;


4. 接下来当然要建立 .htacce 的 rewrite rule

代码:
RewriteEngine On
RewriteRule ^viewforum-([0-9a-zA-Z]+)-([0-9]+)-([0-9]+)\.html$ viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^forum-([0-9a-zA-Z]+)\.html$ viewforum.php?f=$1&mark=topic
RewriteRule ^forum-([0-9a-zA-Z]+)\.html$ viewforum.php?f=$1
RewriteRule ^prev-topic-([0-9]+)\.html$ viewtopic.php?t=$1&view=previous
RewriteRule ^next-topic-([0-9]+)\.html$ viewtopic.php?t=$1&view=next
RewriteRule ^viewtopic-([0-9]+)-([0-9]+)\.html$ viewtopic.php?t=$1&start=$2
RewriteRule ^viewtopic-([0-9]+)-([0-9]+)-([a-zA-Z]*)-([0-9]+)\.html$ viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^viewtopic-([0-9]+)\.html$ viewtopic.php?t=$1
RewriteRule ^viewpost-([0-9]+)\.html$ viewtopic.php?p=$1
RewriteRule ^viewtopic-([0-9]+)\.html&highlight=(.*)$ viewtopic.php?t=$1&highlight=$2
RewriteRule ^profile-([0-9]+)\.html$ profile.php?mode=viewprofile&u=$1


5. 测试~ 当然 OK;

供各位参考,善用 Rewrite 让您的动态网站更美观、更一致、更方便被「吃」 。

2004-10-22 02:17 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#2  

老大。。。。
我怎么弄不成功啊?
你的 loadmode rewrite  了没有?

2004-10-22 02:18 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
网普科技
网普管理员

网普科技人民公仆


积分 3080
发贴 2863
注册 2004-6-26
来自 网普科技
状态 离线
#3  

已经开启了



天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。



网普科技,优质美国主机服务!
美国Linux主机,美国虚拟主机
支持PHP+MYSQL+cPanel+EMAIL
为用户负责,拒绝反动、赌博及色情内容! QQ:126818

发送QQ消息
2004-10-24 07:24 PM
查看资料  访问主页  发短消息  QQ   编辑帖子  引用回复 顶部
owcall
网普朋友





积分 1
发贴 1
注册 2005-3-22
状态 离线
#4  

楼主你知道 phpwind  的怎么改吗?

2005-3-22 11:56 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
茱莉娅
THE BODY SHOP美容顾问

茱莉娅美体小铺


积分 1
发贴 1
注册 2009-5-21
来自 茱莉娅美体小铺
状态 离线
#4  赞助商信息The body shop

茱莉娅美体小铺
茱莉娅美体小铺淘宝店
茱莉娅美体小铺
2005-3-22 11:56 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转:  




Powered by Discuz! 2.5 © 2001-2005 Comsenz Technology Ltd.
Processed in 0.006486 second(s), 7 queries, Gzip enabled
------------------------------------------------------------------------------
本论坛属网普科技交流与技术支持论坛!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
美国主机, 美国虚拟主机, cPanel+PHP+Mysql+Ftp+Email+Zend+GD2+国际域名支持
技术支持 QQ: 126818 EMail & MSN: support[AT]netpu.net
[ 联系我们 ] - [ 网普科技 ]