调整php函数,使其以:-'/小部件?pg=2';而不是';products.php?cat=20&;pg=2';
我添加了以下.htaccess规则:-调整php函数,使其以:-'/小部件?pg=2';而不是';products.php?cat=20&;pg=2';,php,.htaccess,seo,function,Php,.htaccess,Seo,Function,我添加了以下.htaccess规则:- RewriteRule ^widgets$ products.php?cat=20 [QSA] 现在我有一个简单的链接叫做“widgets”,它指向“widgets”类别的第一页。但是,第2页的链接如下所示:- products.php?cat=20&pg=2 我希望后面的几页采用以下形式:- widgets?pg=2 上面.htaccess规则中的QSA标志确实实现了这一点,但我需要更改生成这些页面链接的函数,否则进入widgets?pg=
RewriteRule ^widgets$ products.php?cat=20 [QSA]
现在我有一个简单的链接叫做“widgets”,它指向“widgets”类别的第一页。但是,第2页的链接如下所示:-
products.php?cat=20&pg=2
我希望后面的几页采用以下形式:-
widgets?pg=2
上面.htaccess规则中的QSA标志确实实现了这一点,但我需要更改生成这些页面链接的函数,否则进入widgets?pg=2
的唯一方法是在浏览器地址栏中键入它:-mywebsite.com/widgets?pg=2
我认为下面的PHP函数可能需要调整,以实现我想要的结果。任何PHP向导或具有适当知识的人都可以提供帮助。我之所以要这样做,是因为我希望谷歌为外观简单的页面编制索引,而不是较长的页面:-
function writepagebar($CurPage,$iNumPages,$sprev,$snext,$sLink,$nofirstpage){
$startPage = max(1,round(floor((double)$CurPage/10.0)*10));
$endPage = min($iNumPages,round(floor((double)$CurPage/10.0)*10)+10);
if($CurPage > 1)
$sStr = $sLink . '1' . '" rel="prev"><span style="font-family:Verdana;font-weight:bold">«</span></a> ' . $sLink . ($CurPage-1) . '">'.$sprev.'</a> | ';
else
$sStr = '<span style="font-family:Verdana;font-weight:bold">«</span> '.$sprev.' | ';
for($i=$startPage;$i <= $endPage; $i++){
if($i==$CurPage)
$sStr .= '<span class="currpage">' . $i . '</span> | ';
else{
$sStr .= $sLink . $i . '">';
if($i==$startPage && $i > 1) $sStr .= '...';
$sStr .= $i;
if($i==$endPage && $i < $iNumPages) $sStr .= '...';
$sStr .= '</a> | ';
}
}
if($CurPage < $iNumPages)
$sStr .= $sLink . ($CurPage+1) . '" rel="next">'.$snext.'</a> ' . $sLink . $iNumPages . '"><span style="font-family:Verdana;font-weight:bold">»</span></a>';
else
$sStr .= ' '.$snext.' <span style="font-family:Verdana;font-weight:bold">»</span>';
if($nofirstpage) $sStr = str_replace(array('&pg=1"','?pg=1"'),'" rel="start"',$sStr);
return($sStr);
}
函数writepagebar($CurPage、$inImpages、$sprev、$snext、$sLink、$nofirstpage){
$startPage=最大值(1,圆形(地板((双倍)$CurPage/10.0)*10);
$endPage=min($iNumPages,圆形(地板((双)$CurPage/10.0)*10)+10);
如果($CurPage>1)
$sStr=$sLink.'1'.'rel=“prev”>«;'.$sLink.($CurPage-1)。“>.$sprev.”;
其他的
$sStr=“«;”.$sprev.“|”;
对于($i=$startPage;$i 1)$sStr.='…';
$sStr.=$i;
如果($i==$endPage&$i<$inImpages)$sStr.='…';
$sStr.=“|”;
}
}
如果($CurPage<$iNumPages)
$sStr.=$sLink。($CurPage+1)。'“rel=”next“>”.$snext.“.$sLink.$iNumPages.“>”;
其他的
$sStr.='$snext.»;';
如果($nofirstpage)$sStr=str_replace(数组('&;pg=1','pg=1'),'rel=“start”,$sStr);
回报(sStr);
}
如果有助于了解writepagebar函数如何适合incproducts.php(它本身位于products.php页面中),您可以在这里看到:-
分析您的代码,似乎$sLink是包含'products.php?cat=20'值的人,该函数仅附加页面值,因此您可能需要修改另一个函数 换句话说,writepagebar()只将页码附加到生成的链接。
您必须使用'products.php?cat=20'字符串搜索调用writepagebar()的用户,并在该级别进行修改。在“nitbuntu”的评论后编辑:- 在函数中,而不是在这些行中:-
$sStr = str_replace(array('&pg=1"','?pg=1"'),'" rel="start"',$sStr);
return($sStr);
}
写下以下几行:-
$sStr = str_replace('products.php?cat=20', 'widgets', $sStr);
$sStr = str_replace('&pg=', '?pg=', $sStr);
$sStr = str_replace(array('&pg=1"', '?pg=1"'), '" rel="start"', $sStr);
return($sStr);
}
希望有帮助。你能告诉我你写的这个函数的当前输出是什么,以及链接当前显示的一些示例吗?例如,如果我访问“mywebsite.com/widgets”页面,然后单击发送页面,它会导致:-“mywebsite.com/products.php?cat=20&pg=2”。如果我单击第三个页面,它会ds至:-'mywebsite.com/products.php?cat=20&pg=3'。我希望它能导致:-'mywebsite.com/widgets?pg=2'的第二页或'mywebsite.com/widgets?pg=3'的第三页。同样,如果访问'mywebsite.com/doodaas'页面,我希望第二页的编号指向:-'mywebsite.com/doodaas?pg=2'。我已经在上面添加了一个链接显示writepagebar函数在incproducts.php页面上的位置。incproducts.php页面本身就是products.php的主要部分。请检查我编辑的答案。感谢您的贡献,但执行您提到的操作会导致第二页链接-'products.php?cat=20?pg=2',这将导致错误的页面。似乎所有这些更改的是“&”改为“?”。我会测试一下。但这只适用于“小部件”。如果我需要多做几页。例如,如果我还有另一个名为“涂鸦”的页面,对应于“products.php?cat=21”……和另一个名为“dogs”的页面,对应于“products.php?cat=22”。我会添加额外的内容吗代码中的行数?我对上述评论的回答似乎是“是”。对于“涂鸦”,我刚刚添加了“$sStr=str_replace('products.php?cat=21”,“doodles',$sStr);”。太棒了,谢谢!@nitbuntu-对不起,我不能足够快地回答你的上一条评论。但是,是的,你需要在代码中添加额外的行数。谢谢你掌握了。