#php #.htaccess
Вопрос:
Я изменяю вопрос, потому что, вероятно, плохо объяснил себя. Я изменяю вопрос, потому что, вероятно, плохо объяснил себя. Это мой файл htaccess. все запросы обрабатываются core.php файл
RewriteEngine ON
Options -Indexes -MultiViews
DirectoryIndex home.php
RewriteRule ^sitemap.xml ./sitemap.php [L,QSA]
RewriteCond %{REQUEST_URI} / [^.] $
RewriteRule ^(. [^/])$ %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ core.php [QSA,L]
в core.php файл, выберите URL-адрес и проверьте, соответствует ли он статье или категории.
<?php include './include/include.php'; ?>
<?php
$url = basename(strtolower($_SERVER['REQUEST_URI']));
$cleanUrl = filter_var($url, FILTER_SANITIZE_STRING);
$st2 = $PDO->query("SELECT * FROM sb_article WHERE url = '$cleanUrl'");
while($recordArt = $st2->fetch()){
$artUrl = $recordArt['url'];
}
if($artUrl !== $cleanUrl){
$st = $PDO->query("SELECT * FROM sb_category WHERE categoria = '$cleanUrl'");
while($recordCat = $st->fetch()){
$catTit = $recordCat['categoria'];
}
}
switch($cleanUrl){
case $artUrl:
single();
break;
case $catTit:
archive();
break;
case "contatti":
echo "sono una la pagina contatti";
break;
default:
echo "articolo non trovato";
break;
}
function single(){
$urlArticle = basename(strtolower($_SERVER['REQUEST_URI']));
require './include/dbConnFront.php';
include './include/var-null.php';
require './classes/class.single.php';
$single= new showArticle($urlArticle, $PDO);
$showSingle = $single->single();
if($showSingle !== NULL){ foreach($showSingle as $list){
$id = $list['id'];
$titolo = $list['titolo'];
$testo = html_entity_decode($list['testo']);
$descrizione = $list['descrizione'];
$categoria = $list['categoria'];
$url = $list['url'];
$img = $list['img'];
$data = $list['data'];}}
require( TEMPLATE_PATH . "/single.php");
}
function archive(){
$url_archive = basename(strtolower($_SERVER['REQUEST_URI']));
$urlCompleto = "catogory/".$url_archive;
require './include/dbConnFront.php';
include './include/var-null.php';
require( TEMPLATE_PATH . "/archive.php");
}
?>
если это категория. В archive.php файл выполняет запрос и выводит результат со списком статей.
<?php
$url_archive = basename(strtolower($_SERVER['REQUEST_URI']));
$x_page = 8;
$page = 1;
if(isset($_GET['page'])){$page = filter_var($_GET['page'],FILTER_SANITIZE_NUMBER_INT);}
$rowsCount = $PDO->query("SELECT * FROM sb_article");
$allRows = $rowsCount->rowCount();
$all_page = ceil($allRows / $x_page);
$first = ($page - 1) * $x_page;
$result_sql = $PDO->query("SELECT * FROM sb_article LIMIT $first, $x_page");
?>
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<?php
$nr = $result_sql->rowCount();
$i = 2;
if($nr != 0){
for($x = 0; $x < $nr; $x ){
while($row = $result_sql->fetch()){
$titolo = $row['titolo'];
$id = $row['id'];
$categoria = $row['categoria'];
$data = $row['data'];
$i ;
if($i % 2 == 0){
$bg_row = "row-grey";
} else{
$bg_row = "row-white";
}
echo "
<div class='container-name-article ". $bg_row ." clearfix'>
<div class='name-article'><a href='sb-modify-article.php?". $id ."'>". $titolo ."</a></div>
<div class='btn-delete-article'><a href='sb-conf-delete-article.php?". $id ."'>Elimina</a></div>
</div>
<div class='info-list-article ". $bg_row ."'>
<span class='categoria-list'><b>Categoria: </b>". $categoria ."<span> <span class='data-list'><b>Pubblicato il: </b>". $data ."<span>
</div>
";
}
}}//if
?>
<div class="pagination-list-article">
<?php
if ($all_page > 1){
if ($page > 1){
echo "<span class='text-pagination'><a href="" . $_SERVER['PHP_SELF'] . "?page=" . ($page - 1) . "">";
echo "Indietro</a></span>amp;nbsp;";
}
for ($p=1; $p<=$all_page; $p ) {
if ($p == $page) echo "<span class='nr-no-pagination'>" . $p . "</span>amp;nbsp;";
else {
echo "<span class='nr-pagination'><a href="" . $_SERVER['PHP_SELF'] . "?page=" . $p . "">" . $p . "</a></span>amp;nbsp;";
}
}
if ($all_page > $page){
echo "<span class='text-pagination'><a href="" . $_SERVER['PHP_SELF'] . "?page=" . ($page 1) . "">";
echo "Avanti</a></span>";
}
}
?>
</div>
</body>
</html>
Пока все хорошо, проблема начинается, когда я нажимаю на ссылку разбиения на страницы. В этом случае я перенаправляюсь обратно в core.php страница и URL-адрес изменяются на core.php? Страница = 2. Таким образом, он не находит никаких совпадений. кроме того, даже если я вручную введу имя категории? страница = 2, я всегда перенаправляюсь на core.php страница, приводящая к ошибке. Как я могу решить эту проблему? К сожалению, я не знаю htaccess, поэтому я уверен, что у меня что-то не так.
Ответ №1:
удалите расширение .php, ваш htaccess позаботится о расширении.
Комментарии:
1. спасибо за быстрый ответ. К сожалению, у меня не очень большой опыт работы с htaccess. не могли бы вы объяснить мне, как это сделать?
2. проблема в том, что все страницы обрабатываются core.php страница. Поэтому, нажав на ссылку вперед или назад, URL-адрес будет core.php? Страница = 2. Вместо этого она должна быть namecategory.php? Страница = 2.
3. у вас есть часть кода, в которой вы повторяете <a href=’sb-modify-article.php?»> удалите расширение .php, из-за htacces вам больше не нужно будет объявлять расширение.
4. к сожалению, это не моя проблема. Я отредактировал основной вопрос, чтобы попытаться лучше объяснить себя, предоставив более подробную информацию.
5. Вы пытались удалить «Перезапись ^ core.php [QSA,L]» Из файла .htaccess?