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 přidat vlastní pole ve výpisu článků v administraci
$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.

Related posts

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.

    Reply
    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.

      Reply

Leave a Reply

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čí.