Я не могу заставить подкачку работать с php и htaccess

#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?