您现在的位置: 首页网站前台技术>正文
phpwind8.x仿地宝网高级伪静态详细说明
2012年01月24日 网站前台技术 暂无评论

原文链接:http://www.phpwind.net/read-htm-tid-1606032.html

看到很多童鞋都在说伪静态404的问题 我用了下骨头的也404 呵呵

我去年做过论坛就美做过了 于是翻了翻7.32的论坛程序  找了下以前的伪静态

然后自己对比 骨头的 修改了下 成功了 现在 把各种伪带后纳的不带的以及静态命名详细分享给大家!

适用于8.5   8.7  都可以的

两种地址 自己看吧 很简单的!

这里就拿服务器IIS来做说明吧 如果是虚拟主机的话 只要主机支持 就去除第一个安装步骤!(下面会说)

首先下载组件:http://www.isapirewrite.com/download/isapi_rwl_x86_0059.msi

1.下载后安装  安装 步骤都默认 一直点中间那个按钮即可!(默认安装到:C:\Program Files\Helicon\ISAPI_Rewrite\)
2.打开IIS 展开网站  右键单击你的网站 选择【 属性】(弹出网站属性窗口) 再点【ISAPI帅选器】点【添加】(帅选器名称:随便写 可执行文件:就是第一步你安装的那个组件的目录里面的ISAPI_Rewrite.dll 文件) 搞定点【 确认】
注:以上两步是用于服务器IIS的 如果是虚拟主机请忽视这两步

下面开始设置伪静态(我就直接按照安装目录的路径说哈)

首先打开:C:\Program Files\Helicon\ISAPI_Rewrite\httpd.ini  (复制以下内容进去 提示文件不存在请右键单击httpd.ini 文件把只读的勾去掉)
------------下面一行开始复制----------
[ISAPI_Rewrite]
# Defend your computer from some worm attacks
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/thread-htm-tid-(\d+)-(.*).html  $1/thread.php?fid=$2
RewriteRule ^(.*)/read-htm-tid-(\d+)-(.*).html  $1/read.php?tid=$2
RewriteRule ^(.*)/wg(\d+)-(.*)$ $1/thread.php?fid=$2&page=$3
RewriteRule ^(.*)/wg(.*)$      $1/thread.php?fid=$2&page=$3
RewriteRule ^(.*)/n(\d+)-(\d+)-(.*)$  $1/read.php?tid=$2&page=$3&fpage=$4
RewriteRule ^(.*)/n(\d+)-(.*)$       $1/read.php?tid=$2&page=$3
RewriteRule ^(.*)/n(.*)$         $1/read.php?tid=$2

RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
RewriteRule ^(.*)/simple/([a-z0-9\_]+\.html)$ $1/simple/index.php?$2
</IfModule>
------------复制到上面一行结束----------


注视:以上代码中的:wg 代表自定义版块名称 如:http://bbs.wgcn.cn/wg8  (8=版块ID wg就是自己定义的名称)
注视:以上代码中的:0代表自定义帖子名称 如:http://bbs.wgcn.cn/n1 (n=你自己定义的名称 1=帖子ID)

提示:虚拟主机请把蓝色部分文字复制 保存为:.htaccess 文件 传到根目录

然后打开论坛目录:require/common.php

------------下面一行开始----------
function urlRewrite($url) {
global $db_htmifopen, $db_dir, $db_ext;
if (!$db_htmifopen) return $url;
$tmppos = strpos($url, '#');
$add = $tmppos !== false ? substr($url, $tmppos) : '';
$turl = str_replace(array('.php?', '=', '&', '&', $add), array($db_dir, '-', '-', '-', ''), $url);
$turl != $url && $turl .= $db_ext;
return $turl . $add;
}
------------结束----------
替换为:
------------下面一行开始复制----------
function urlRewrite($url) {
global $db_htmifopen, $db_dir, $db_ext;
if (!$db_htmifopen) return $url;
if (!preg_match('/^(http|ftp|telnet|mms|rtsp)|admin.php|rss.php/i', $url)){
$add = strpos($url, '#') !== false ? substr($url, strpos($url, '#')) : '';
if(strpos($url, 'thread.php?') !== false){
unset($rw);
$tharr = explode('&', substr(str_replace($add, '', $url), 11));
foreach($tharr as $key => $value){
$ru = explode('=', $value, 3);
if($ru['1']){
switch($ru['0']){
case 'fid':
$rw['fid'] = $ru['1'];
$rw['para'] < 1 && $rw['para'] = 1;
break;
case 'page':
$rw['page'] = $ru['1'];
$rw['para'] < 2 && $rw['para'] = 2;
break;
case 'type':
$rw['type'] = $ru['1'];
$rw['para'] < 4 && $rw['para'] = 4;
break;
default:
$rw['para'] = 8;
$urlfail = 1;
break;
}
}
}
switch($rw['para']){
case '1':
$url = "wg" . $rw['fid'] ;
break;
case '2':
$url = "wg" . $rw['fid'] . "-" . $rw['page'] ;
break;
case '4':
$url = "wg" . $rw['fid'] . "-" . $rw['page'] . "-" . $rw['type'] ;
break;
}
}elseif(strpos($url, 'read.php?') !== false){
unset($rw);
$rarr = explode('&', substr(str_replace($add, '', $url), 9));
foreach($rarr as $key => $value){
$ru = explode('=', $value, 2);
if($ru['1']){
switch($ru['0']){
case 'tid':
$rw['tid'] = $ru['1'];
$rw['type'] < 1 && $rw['type'] = 1;
break;
case 'page':
$rw['page'] = $ru['1'];
$rw['type'] < 2 && $rw['type'] = 2;
break;
case 'fpage':
$rw['fpage'] = $ru['1'];
$rw['type'] < 3 && $rw['type'] = 3;
break;
default:
$rw['type'] = 4;
$urlfail = 1;
break;
}
}
}
switch($rw['type']){
case '1':
$url = "n" . $rw['tid'];
break;
case '2':
$url = "n" .  $rw['tid'] . "-" . $rw['page'];
break;
case '3':
$url = "n" .  $rw['tid'] . "-" . $rw['page'] . "-" . $rw['fpage'];
break;
}
}
if($urlfail){
$url = str_replace(
array('.php?', '=', '&', $add),
array($db_dir, '-', '-', ''),
$url
) . $db_ext . $add;
}
}elseif(strpos($url, 'hack.php?') !== false){
unset($rw);
$rarr = explode('&', substr(str_replace($add, '', $url), 9));
foreach($rarr as $key => $value){
$ru = explode('=', $value, 2);
if($ru['1']){
switch($ru['0']){
case 'H_name':
$rw['H_name_value'] = $ru['1'];
if(in_array($rw['H_name_value'],array('fenlei','mm'))){
$rw['type'] = 1;
}
break;
}
}
switch($rw['type']){
case '1':
$url = $rw['H_name_value'] . "/";
break;
//case '2':
// $url = $rw['tid'] . "_" . $rw['page'] . ".html";
// break;
//case '3':
// $url = $rw['tid'] . "_" . $rw['page'] . "_" . $rw['fpage'] . ".html";
// break;
}
}
}
return "$url";
}
------------上面一行结束----------
注释:自己看代码中的红色表示的字符 需要跟你开始静态哪里设置的对应哦 (这个不多说你们懂得)

网站后台的伪静态(开启)
静态目录:-htm-
静态目录扩展名设置:.html


(其实这里只要开启就OK了名称好像默认的都OK)


好的 下面你访问你的网站版块地址=http://bbs.wgcn.cn/wg8  帖子地址=http://bbs.wgcn.cn/08
---------------------------------------------------------------------------------------------------------------
下面这里说的是把帖子地址改为:http://bbs.wgcn.cn/n8.html 样式
复制以下代码到:httpd.ini  
------------下面一行开始复制----------
[ISAPI_Rewrite]
# Defend your computer from some worm attacks
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/thread-htm-tid-(\d+)-(.*).html $1/thread.php?fid=$2
RewriteRule ^(.*)/read-htm-tid-(\d+)-(.*).html $1/read.php?tid=$2
RewriteRule ^(.*)/wg(\d+)-(.*)$ $1/thread.php?fid=$2&page=$3
RewriteRule ^(.*)/wg(.*)$ $1/thread.php?fid=$2&page=$3
RewriteRule ^(.*)/n(\d+)-(\d+)-(.*).html$ $1/read.php?tid=$2&page=$3&fpage=$4
RewriteRule ^(.*)/n(\d+)-(.*).html$ $1/read.php?tid=$2&page=$3
RewriteRule ^(.*)/n(.*).html$ $1/read.php?tid=$2
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
RewriteRule ^(.*)/simple/([a-z0-9\_]+\.html)$ $1/simple/index.php?$2
</IfModule>
------------上面一行结束----------


注释:红色的就是不同的地方了大家懂的
提示:虚拟主机请把蓝色部分文字复制 保存为:.htaccess 文件 传到根目录

require/common.php (还是替换哪一段 看上面有说是替换哪一段)
------------下面一行开始复制----------
function urlRewrite($url) {
global $db_htmifopen, $db_dir, $db_ext;
if (!$db_htmifopen) return $url;
if (!preg_match('/^(http|ftp|telnet|mms|rtsp)|admin.php|rss.php/i', $url)){
$add = strpos($url, '#') !== false ? substr($url, strpos($url, '#')) : '';
if(strpos($url, 'thread.php?') !== false){
unset($rw);
$tharr = explode('&', substr(str_replace($add, '', $url), 11));
foreach($tharr as $key => $value){
$ru = explode('=', $value, 3);
if($ru['1']){
switch($ru['0']){
case 'fid':
$rw['fid'] = $ru['1'];
$rw['para'] < 1 && $rw['para'] = 1;
break;
case 'page':
$rw['page'] = $ru['1'];
$rw['para'] < 2 && $rw['para'] = 2;
break;
case 'type':
$rw['type'] = $ru['1'];
$rw['para'] < 4 && $rw['para'] = 4;
break;
default:
$rw['para'] = 8;
$urlfail = 1;
break;
}
}
}
switch($rw['para']){
case '1':
$url = "wg" . $rw['fid'] ;
break;
case '2':
$url = "wg" . $rw['fid'] . "_" . $rw['page'] ;
break;
case '4':
$url = "wg" . $rw['fid'] . "_" . $rw['page'] . "_" . $rw['type'] ;
break;
}
}elseif(strpos($url, 'read.php?') !== false){
unset($rw);
$rarr = explode('&', substr(str_replace($add, '', $url), 9));
foreach($rarr as $key => $value){
$ru = explode('=', $value, 2);
if($ru['1']){
switch($ru['0']){
case 'tid':
$rw['tid'] = $ru['1'];
$rw['type'] < 1 && $rw['type'] = 1;
break;
case 'page':
$rw['page'] = $ru['1'];
$rw['type'] < 2 && $rw['type'] = 2;
break;
case 'fpage':
$rw['fpage'] = $ru['1'];
$rw['type'] < 3 && $rw['type'] = 3;
break;
default:
$rw['type'] = 4;
$urlfail = 1;
break;
}
}
}
switch($rw['type']){
case '1':
$url = "n" .$rw['tid'] . ".html";
break;
case '2':
$url = "n" .$rw['tid'] . "-" . $rw['page'] . ".html";
break;
case '3':
$url = "n" . $rw['tid'] . "-" . $rw['page'] . "-" . $rw['fpage'] . ".html";
break;
}
}
if($urlfail){
$url = str_replace(
array('.php?', '=', '&', $add),
array($db_dir, '-', '-', ''),
$url
) . $db_ext . $add;
}
}elseif(strpos($url, 'hack.php?') !== false){
unset($rw);
$rarr = explode('&', substr(str_replace($add, '', $url), 9));
foreach($rarr as $key => $value){
$ru = explode('=', $value, 2);
if($ru['1']){
switch($ru['0']){
case 'H_name':
$rw['H_name_value'] = $ru['1'];
if(in_array($rw['H_name_value'],array('fenlei','mm'))){
$rw['type'] = 1;
}
break;
}
}
switch($rw['type']){
case '1':
$url = $rw['H_name_value'] . "/";
break;
//case '2':
// $url = $rw['tid'] . "_" . $rw['page'] . ".html";
// break;
//case '3':
// $url = $rw['tid'] . "_" . $rw['page'] . "_" . $rw['fpage'] . ".html";
// break;
}
}
}
return "$url";
}
------------上面一行结束----------
我标识了 自己对比吧 OK  现在就可以了

修复问题:
原:$url = $rw['tid'] . "_" . $rw['page'] . "_" . $rw['fpage'] ;

改:$url = $rw['tid'] . "-" . $rw['page'] . "-" . $rw['fpage'] ;

符号错误了哈 _ 改为 - (因为以前无法访问帖子版块多页现在可以了以上代码修复了第二页地址为:bbs.wgcn.cn/01_2 )

大家勿用0作为自定义名称 否则会造成论坛无法上传头像 且 0开头的文件都无法访问!

 

附相关文章:

STWind 高级伪静态教程适用版本PW8.5(0323) http://www.phpwind.net/read.php?tid-1280119.html

 

给我留言