Přesměrování neexistujících url pomocí 301 na homepage webu

Přestože se nás Google snaží přesvědčit o opaku, síla odkazů se nedá popřít. A pokud odkaz vede na neexistující stránku, přicházíte o jeho vliv na to, jak vás vyhledávače hodnotí. Ukážeme si, jak tomu zabránit.

Dnešní článek nebude dlouhý, protože ani řešení není nijak náročné. Buď poprosíte programátora, nebo použijete Ctrl+c a Ctrl+v a kód, který vám ukáži, vložíte do functions.php.

V případě, že odkaz na váš web, vede na neexistující stránku, má WordPress vytvořený pěkný mechanizmus, který vás odkáže na vlastní 404 stránku. To samozřejmě, pokud máte v šabloně soubor 404.php. Díky tomu máte možnost, vytvořit si obsah, jenž se uživateli zobrazí a ten pak na webu může zůstat.

Bohužel neexistující stránka vrací 404 error a síla odkazu tak přijde vniveč. Pomocí funkce můžeme takový odkaz detekovat a přesměrovat jej s 301 kódem na hlavní stranu.

Připravíme si funkci

function link_power_saver(){
 
}

Přidáme globální proměnnou $wp_query a zjistíme, zda se jedná o 404

function link_power_saver(){
        global $wp_query;
	if ( $wp_query->is_404 ) {
 
        }
}

Před přesměrováním musíme ještě vyloučit url, kterou používá Google pro verifikaci.
Připravíme si proměnnou $root a pokud se url neshoduje s verifikační, přesměrujeme na homepage.

function link_power_saver(){
        global $wp_query;
	if ( $wp_query->is_404 ) {
 
                $root = '/';
		if ( preg_match( '#^http://[^/]+(/.+)$#', get_option( 'siteurl' ), $matches ) ) {
			$root = $matches[1];
		}
 
		if ( $root[ strlen($root) - 1 ] != '/' ) {
			$root .= '/';
		}
 
		if ( strpos( $_SERVER['REQUEST_URI'], $root.'noexist_' ) !==  ) {
			wp_redirect( get_bloginfo( 'siteurl' ) , 301 );
			exit();
		}
 
        }
}
Čtěte  Jak si (ne)nechat poradit na Facebooku a v diskuzích
$root = '/'; if ( preg_match( '#^http://[^/]+(/.+)$#', get_option( 'siteurl' ), $matches ) ) { $root = $matches[1]; } if ( $root[ strlen($root) - 1 ] != '/' ) { $root .= '/'; } if ( strpos( $_SERVER['REQUEST_URI'], $root.'noexist_' ) !== 0 ) { wp_redirect( get_bloginfo( 'siteurl' ) , 301 ); exit(); } } }

Celou funkci pak zavěsíme do akce wp

add_action('wp', 'link_power_saver', 100);

Za inspiraci kódem děkuji mr. Flores a obrázek jsem si „vypůjčil“ z Paperblog.com

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

2 Comments

  1. Duben

    Tyhle přesměrování 404 na homepage jsou sice zajímavou fintou, ale osobně to takhle neřeším. Jak pak detekuješ skutečné 404 abys je mohl vyhodnocovat a třeba opravit jen nějakou chybu, kvůli které URL nejde? Ono z hlediska linkjuice tam asi je drobný přínos, ale zahýbá s analytikou a úplně mi přesměrování všech 404 na homepage nesedí.

    Spíš preferuju odchytávat 404 a ty, které dávají smysl jako odstraněné články apod. pak směrovat nějakým 301 redirect pluginem.

    Odpověď
    1. Musilda

      Tak samozřejmě, že je lepší odchytávat neplatné url a pak pomocí nastavení jim podstrkávat konkrétní stránky. To umí plugin Redirect. Účel článku není podat na talíři připravené řešení, ale ukázat způsob.

      Odpověď

Přidejte komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Chcete mít přehled o dění ve světě WordPressu?

Přímo do vašeho emailu

Pravidelný přehled o novinkách, trendech a událostech, které se točí kolem WordPressu. Souhrn toho nejzajímavějšího od nás i ze zahraničí.