PHPwind高级伪静态规则及教程
<p>写在前面的话. PW8 是个里程碑式的版本,有门户,有频道,等多元素多模式组成, stwind高度伪静态(超级伪静态)的处理方法仅仅适用于论坛部分. 并尽力避免与其他操作和地址产生冲突.在这个版本, 改变了几个变量,一个是列表页的变量,一个是过滤特殊字符的变量, 地址组成依然不变, 帖子也依然以 article 为前缀, 列表页以commtopics 链接.pw8里函数改动较大,所以修改也较为麻烦. 考虑到会被任意修改,以后版本考虑单个加密这个文件. 本次依然沿用以前的风格. <br />一,打开require/common.php<br />找到<br />function urlRewrite($url) {<br /> global $db_htmifopen, $db_dir, $db_ext;<br /> if (!$db_htmifopen) return $url;<br /> $tmppos = strpos($url, '#');<br /> $add = $tmppos !== false ? substr($url, $tmppos) : '';<br /> $turl = str_replace(array('.php?', '=', '&', '&', $add), array($db_dir, '-', '-', '-', ''), $url);<br /> $turl != $url && $turl .= $db_ext;<br /> return $turl . $add;<br />}<br />替换成<br />function urlRewrite($url) {<br /> global $db_htmifopen, $db_dir, $db_ext;<br /> if(strpos($url, 'thread.php?') !== false){<br /> unset($URL_type); <br /> $Thread_array = explode('&', substr(str_replace($add, '', $url), 11));<br /> foreach($Thread_array as $key => $value){<br /> $URL_array = explode('=', $value, 2);<br /> if($URL_array['1']){<br /> switch($URL_array['0']){<br /> case 'fid':<br /> $URL_type['fid'] = $URL_array['1'];<br /> $URL_type['type'] < 1 && $URL_type['type'] = 1;<br /> break;<br /> case 'page':<br /> $URL_type['page'] = $URL_array['1'];<br /> $URL_type['type'] < 2 && $URL_type['type'] = 2;<br /> break;<br /> default:<br /> $URL_type['type'] = 4;<br /> break;<br /> }}}<br /> switch($URL_type['type']){<br /> case '1':<br /> $url = "commtopics-" . $URL_type['fid'] ; break; <br /> case '2':<br /> $url = "commtopics-" . $URL_type['fid'] . "-" . $URL_type['page'] ; break;<br /> }}elseif(strpos($url, 'read.php?') !== false){<br /> unset($URL_type);<br /> $tmppos = strpos($url, '#');<br /> $add = $tmppos !== false ? substr($url, $tmppos) : '';<br /> $Read_array = explode('&', substr(str_replace($add, '', $url), 9));<br /> foreach($Read_array as $key => $value){<br /> $URL_array = explode('=', $value, 2);<br /> if($URL_array['1']){<br /> switch($URL_array['0']){<br /> case 'tid':<br /> $URL_type['tid'] = $URL_array['1'];<br /> $URL_type['type'] < 1 && $URL_type['type'] = 1;<br /> break;<br /> case 'page':<br /> $URL_type['page'] = $URL_array['1'];<br /> $URL_type['type'] < 2 && $URL_type = 2;<br /> break;<br /> case 'fpage':<br /> $URL_type['fpage'] = $URL_array['1'];<br /> $URL_type['type'] < 3 && $URL_type['type'] = 3;<br /> break;<br /> default:<br /> $URL_type['type'] = 4;<br /> break;<br /> }}}<br /> switch($URL_type['type']){<br /> case '1':<br /> $url = "article-".$URL_type['tid'].".html" ;<br /> break;<br /> case '2':<br /> $url = "article-".$URL_type['tid'] . "-" . $URL_type['page'].".html" ;<br /> break;<br /> case '3':<br /> $url = "article-". $URL_type['tid'] . "-" . $URL_type['page'] . "-" . $URL_type['fpage'].".html" ;<br /> break;<br /> }<br /> }<br /> // $url .= $db_ext; 很多人以为后缀问题,故作特处理。<br /> return $url . $add;<br />}<br />规则如下. 添加到httpd.ini或者.htaccess 或者其他<br /><IfModule mod_rewrite.c><br />RewriteEngine on<br />RewriteRule ^thread-htm-tid-(\d+)-(.*).html thread.php?fid=$1<br />RewriteRule ^read-htm-tid-(\d+)-(.*).html read.php?tid=$1<br />RewriteRule ^commtopics-(\d+)-(.*) thread.php?fid=$1&page=$2<br />RewriteRule ^commtopics-(.*) thread.php?fid=$1&page=$2<br />RewriteRule ^article-(\d+)-(\d+)-(.*).html read.php?tid=$1&page=$2&fpage=$3 <br />RewriteRule ^article-(\d+)-(\d+).html read.php?tid=$1&page=$2<br />RewriteRule ^article-(.*).html read.php?tid=$1<br />RewriteRule ^(.*)-htm-(.*).html $1.php?$2<br />RewriteRule ^(.*)/simple/(+\.html)$ $1/simple/index.php?$2<br /></IfModule><br /></p>
頁:
[1]