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 Odpověď
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?