我写了一个SEO友好的分页功能,工作正常。但是,我目前的网址如下所示:
1。 localhost/test/tastepage.php/test/testpage/page/123
但我想要完成的是:
2。 localhost/test/testpage.php/page/123
或localhost/test/testpage.php/123
当我进入网址栏并编辑我的网址时, 2 它工作正常。但我想知道,每当我第一次加载页面时,为什么我的网址看起来像 1 ?
以下是我在tastpage.php文件中的内容:
$page=1;//set page number to 1 as default
$sitepath=explode('/',parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH));//removing slashes from the url and slicing up the url into an array
if(is_array($sitepath)&& !empty($sitepath)){
if($keys=array_search('page',$sitepath)){;
print_r($keys);
$page=(int)$sitepath[$keys+1];
}
}
function paginate($page,$display,$total){
$sitepath=parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
if($sitepath!='/'){
$sitepath=rtrim($sitepath,'/');
if(stristr($sitepath,'page/')){
$sitepath=rtrim($sitepath,'0..9');
$query='';
}
else {
$query=$sitepath .'/page/';
}
}
else {
$query = 'page/';
}
$pages=ceil($total/$display );
$first='<a href="'.$sitepath.$query.'1">First</a>';
$last='<a href="'.$sitepath.$query.$pages.'">Last</a>';
$next='<li><a href="'.$sitepath. $query . ($page + 1) . '">»</a></li>';
$preview='<li><a href="'.$sitepath.$query.($page-1).'">«</a></li>';
$numbers="";
for ($i=max(1,$page-5);$i<=min($page+1,$pages);$i++)
{
if($i==$page){
$numbers.='<li><a class="active" href="'.$sitepath.$query.$i.'">'.$i.'</a></li>';
}
else {
$numbers.='<li><a href="'.$sitepath.$query.$i.'">'.$i.'</a></span></li>';
}
}
if($page>1){
echo $preview;
}
echo $numbers;
if($page<$pages){
echo $next;
}
};
$limit = 10;
//count how many rows
$total = $conn->query("SELECT COUNT(*) FROM pagi")->fetchColumn();
if ($total > 0) {
$start = $limit * $page - $limit;
$sql = $conn->prepare("SELECT * FROM pagi ORDER BY pg_id LIMIT :start, :limit");
$sql->bindValue(':start', $start, PDO::PARAM_INT);
$sql->bindValue(':limit', $limit, PDO::PARAM_INT);
$sql->execute();
if ($sql->rowCount() > 0) {
while ($result = $sql->fetch(PDO::FETCH_ASSOC)) {
echo $result['pg_name'],"<br />";
}
}
} else {
echo "no result to fetch";
}
?>
答案 0 :(得分:3)
我的答案是您的网址问题的替代解决方案。 请在您网站的根目录中输入'.htaccess'文件。将此代码放在.htaccess:
上RewriteEngine on
RewriteRule ^/?testpage/(.*) testpage.php?page=$1 [L]
然后你可以通过testpage.php上的这个php代码获取当前页码:
<?php
$page = (isset($_GET['page']) ? (int)$_GET['page'] : 1);//holds the current page
echo $page;
?>
在浏览器中尝试使用这些网址来测试此解决方案是否有效:
要获得解释,请尝试阅读本文:https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/