Autor Zpráva
Jakub45
Profil
Zdravím všechny,

Mám na vás dotaz ohledně přesměrování, konkrétně potřebuji aby se mi URL ""www.xyz.cz/?cokoliv" přesměrovala na index.php ale s tím, že se URL opravdu změní na "www.xyz.cz/index.php". Takto mi Google hlásí duplicitní obsah stránky "?cokolivnejakablbost" a "index.php". Máte někdo nějaký postup jak tomuto zamezit? V PHP se příliš nevyznám. Děkuji

Jakub
janbarasek
Profil
Jakub45:
Udělej to přes .htaccess, je to mnohem lepší řešení. Osobně bych jako hlavní stránku volil přímo název domény webu, ne verzi s index.php. Jinak ze zkušenosti vím, že Googlu ty duplicity moc nevadí, vybere si jednu z nich a tu bude brát za správnou.
lionel messi
Profil
Jakub45:
Riešenie v .htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^.
RewriteRule ^ index.php? [R=301,L]
Joker
Profil
lionel messi:
Akorát místo 404.php tam má být index.php.
Doplnění: A podle mě to nebude fungovat, protože QUERY_STRING není název souboru.
lionel messi
Profil
Joker:
Vychádzal som z tohto príspevku, vďaka za upozornenie, opravil som.
Kubo2
Profil
Jakub45:
Univerzálne riešenie v PHP (môžeš includovať do každej stránky):

<?php

/**
 * Trvalo Presmeruje všetky požiadavky na súbor s query stringom
 * na verziu bez query stringu.
 *
 * @author Kubo2
 */

// ak existujú nejaké query string parametre
if(!count($_GET)) {
  return false;
}

$kanonickáAdresa = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'];
header("Location: $kanonickáAdresa", true, 301);
unset($kanonickáAdresa);
return true;
//exit;

Použitie je potom asi nasledovné:

<?php

// hlavný súbor - index.php
// v podmienke overí, či prebehlo presmerovanie
// predchodzí kód ulož do presmerovanie.php
if(true === include('presmerovanie.php')) {
  // presmerovanie prebehlo
  // niečo vykonáme, napríklad si to zaznamenáme do logu
  // ...

  // ukončíme beh skriptu
  exit;
}

// pokračujeme v bežnom spracovávaní skriptu
// ...
Jakub45
Profil
Už to funguje, použil jsem nakonec řešení přes .htacces. Díky moc všem:)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: