htaccess s úhlednou url, a search console
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();
2 Answers
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ě.
Dobrý den,
takto žádnou chybu nevidím. S tímto bych Vám doporučil obrátit se spíše na nějaké programátorské fórum.
Takto Vám nedokážu příliš poradit. Co se Vám tedy vypíše při pokusu o zobrazení neexistující stránky? Případně kam Vás to přesměruje?