htaccess s úhlednou url, a search console

Vyřešeno198 zhlédnutíRedakční systémycms htaccess PHP
0

Dobrý den,

Vytvářím CMS pro ovládání stránky ale narazil jsem na problém ohledně htaccess u ohledné url. A také Google Search Console mi u všech podstránek říká že chyba přesměrování je tam problém u 404 že se u podstránek nepřesměruje pokud se zadá špatná url.

Dám příklad:

Mám url

mojestranka.cz/stranka-jedna – Stránka existuje a zobrazuje se

mojestranka.cz/stranka-dva – Stránka existuje a zobrazuje se

mojestranka.cz/stranka-asdasdas – Stránka v CMS neexistuje ale snaží se načíst a zobrazit a vyjedou jen pokusy databáze o načtení.

Takže vím že problém se stává u úhledné url

můj htaccess

#Options +FollowSymlinks
RewriteEngine ON
 ErrorDocument 404 /404.html
  RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
 RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
 RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
 RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
 RewriteCond %{QUERY_STRING} ^page=(.*)/?$ [NC]
RewriteRule ^index\.php/?$ %1 [R=301,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

index.php a funkce

function is_page_exist(){
   if(isset($_GET["page"])){
    $page = $_GET["page"];
    $myQuery = "SELECT * FROM wc_pages WHERE format_title='".$page."'";
    $results = mysqli_query($this->dbCon, $myQuery);
    if(mysqli_num_rows($results) > 0){
     }else{
     $keyword = $_GET["page"];
     $myQuery_1 = "SELECT * FROM wc_pages WHERE page_title LIKE '%$keyword%' LIMIT 1";
     $results_sql = mysqli_query($this->dbCon, $myQuery_1);
     $rowcount = mysqli_num_rows($results_sql);
     if ($rowcount !== 0){
      $row = mysqli_fetch_assoc($results_sql);
      //header("Location: https://mojestranka.cz/".$row["format_title"]."");
     }else{
exit();
     }
    }
   }
 }
index.php
$wc->is_page_exist();

Role: Zákazník
Otázka je uzamčena pro nové odpovědi.
Vybral nejlepší odpověď
0

Problém jsem vyřešil až mi přišlo řešení vtipné.

Stačilo smazat z htaccess

RewriteCond %{QUERY_STRING} ^page=(.*)/?$ [NC]
RewriteRule ^index\.php/?$ %1 [R=301,NC]


Pro trošku slušení kód jsem upravil jinak opravdu stačilo smazat vrchní 2 řádky z htaccess
index.php – Vršek stránky

$nwc = new WC();
    if(isset($_GET["page"])){
     if(!$wc->check_page_exist($_GET["page"])){
      header("HTTP/1.0 404 Not Found");
      include "404.html";
      die;
     }
    }

function.php  – check_page_exist

function check_page_exist($page){
    $myQuery = "SELECT * FROM wc_pages WHERE format_title='".$page."'";
    $results = mysqli_query($this->dbCon, $myQuery);
    if(mysqli_num_rows($results) > 0){
     return true;
    }else{
     return false;
    }
 }

Každopádně děkuji za snahu při řešení.
Opravdu mi přišlo vtipné že stačilo smazat 2 řádky protože pro google už to bylo moc přesměrování.

Mějte se krásně.

Role: Zákazník
Vybral nejlepší odpověď
Prohlížíte 1 ze 2 odpovědí, klikněte zde pro zobrazení všech odpovědí.

Kategorie