Sisu Marketing

WordPress: kuidas 301 suunata leheküljelehti ema-URL-ile

See võib olla anekdootlik, aga mina olen seda märganud. Google Search Console muutub oma aruandluses üha põhjalikumaks. Nii palju, et olen hakanud sellele üha enam toetuma ... eriti selleks, et tuvastada saidilt puuduvaid lehti, mis võivad otsingutulemusi negatiivselt mõjutada.

Minu saidi teema hõlmab lähenemisviisi, kus külastajad saavad klõpsata koormus rohkem kui nad sooviksid näha täiendavaid postitusi avalehel, kategooriate arhiivides, siltide arhiivides või isegi otsingutulemustes. See kasutajakogemus (UX) täiustus kaotab lehekülgimise, mille puhul kasutaja (või otsingurobot) peaks lehti ja ajaveebipostituste tulemusi itereerima.

Kuid hoolimata selle funktsiooni lubamisest minu saidil, usub Google ikkagi, et mul on lehekülgede jagamine ja saidil on vigu, kus neid lehti enam ei leita. Kui ma külastasin mõnda neist Google Search Console'is loetletud lehtedest, siis see andis tulemuseks 404Google usub, et minu saidil on probleem, kuigi seda pole.

Selle parandamiseks pidin oma kontole looma kohandatud ümbersuunamise. lapse teema functions.php mis võtab ükskõik millise neist /lehekülgedest/# ja suunab need ümber nende ülemleheküljele. Üks erand, mida ma vajasin, oli minu kohandatud postituse tüüp minu jaoks lühendid.

Täna lisasin oma lapseteemale selle täiustuse, mis sobib kõigile ülaltoodud stsenaariumidele:

  • /page/{number} – Minu avaleht on minu ajaveebi arhiiv, seega annaks see minu „Laadi rohkem“ funktsiooniga 404 vea. Nüüd suunab iga leht ümber minu avalehele.
  • /tag/{tag-slug}/page/{number} – Minu sildilehtedel kuvatakse laadimisfunktsiooniga 404 veakood. Nüüd suunab iga leht ümber ülemlehele. /tag/{tag-slug}/
  • /category/{category-slug}/page/{number} – Minu kategoorialehed annaksid laadimisfunktsiooniga 404 vea. Nüüd suunab iga kategoorialeht ümber ülemlehele /category/{category-slug}/
  • /{category-slug}/page/{number} – Minu kategoorialehed jäävad välja /category/ ja see annaks minu laadimisfunktsiooniga 404 vea. Nüüd suunab iga kategoorialeht ümber ülemlehele /{category-slug}/

Minu akronüümide lehed on aga endiselt indekseeritavad:

  • /acronym/page/{number} on endiselt olemas ning seda saab indekseerida ja roomata.

Lapse teema kood

add_action('init', 'custom_redirect_with_exceptions');
function custom_redirect_with_exceptions() {
    // Regular expression to match paths ending with /page/number
    // Updated regex to capture potential author or tag path
    if (preg_match('/^(\/author\/[^\/]+|\/tag\/[^\/]+|\/[^\/]+)\/page\/\d+/', $_SERVER['REQUEST_URI'], $matches)) {
        $base_path = $matches[1]; // Capture the base path including potential author or tag path
        
        // List of base paths to exclude from redirection (e.g., custom post types)
        $exclusions = ['/acronyms']; // Replace with your actual CPT base paths

        // Check if the base path is not in the exclusions list
        if (!in_array($base_path, $exclusions)) {
            // No additional check for tag or author specific logic here, base path used as is
            $redirect_base = $base_path;
            
            // Construct the new URL to redirect to the base path without pagination
            $new_url = home_url($redirect_base);
            
            // Redirect to the new URL with a 301 permanent redirect status
            wp_redirect($new_url, 301);
            exit;
        }
        // No action is taken if the URL is in the exclusions list
    }
    // Check if the URL is just a paginated home URL
    else if (preg_match('/^\/page\/\d+/', $_SERVER['REQUEST_URI'])) {
        // Redirect paginated home URLs to the home page
        wp_redirect(home_url('/'), 301);
        exit;
    }
}

Kood kontrollib kõigepealt, kas URL vastab lehekülgedega jaotatud vormingule, välja arvatud määratud teed. Kui vastab ja see pole välistatud tee, suunab see ümber selle tee lehekülgedega jaotamatule versioonile. Kui URL on lehekülgedega jaotatud avalehe URL, suunab see ümber algsele lehele.

Siin on ülevaade muudetud WordPressi ümbersuunamiskoodi igast etapist:

  1. Action Hook registreerimineKood algab toimingu registreerimisega WordPressi init konks. Selle toimingu nimi on custom_redirect_with_exceptions ja see on seatud käivituma WordPressi initsialiseerimisel. See on tüüpiline etapp ümbersuunamiste teostamiseks, kuna brauserile pole veel väljundit saadetud.
   add_action('init', 'custom_redirect_with_exceptions');
  1. Funktsiooni definitsioon: custom_redirect_with_exceptions funktsioon on defineeritud. Siin asub teatud tüüpi URL-ide ümbersuunamise peamine loogika.
  2. URL-i mustri sobitamineFunktsiooni sees on preg_match kasutatakse praeguse URL-i (leidub jaotises) kontrollimiseks $_SERVER['REQUEST_URI']) vastab teatud mustritele. Täpsemalt kontrollib see URL-e, mis lõpevad /page/number ja jäädvustab eelneva tee, mis võib olla üldine tee, autori tee (/author/[name]) või sildi tee (/tag/[name]).
   if (preg_match('/^(\/author\/[^\/]+|\/tag\/[^\/]+|\/[^\/]+)\/page\/\d+/', $_SERVER['REQUEST_URI'], $matches)) {
       $base_path = $matches[1];

See osa hõlmab URL-i osa enne /page/[number], mis on salvestatud $base_path.

  1. Väljajätmiste käsitlemine: Kood defineerib massiivi nimega $exclusions, mis sisaldavad teid, mida ei tohiks ümber suunata. Need võivad olla teed konkreetsete kohandatud postitustüüpide või muude erijuhtude jaoks.
   $exclusions = ['/acronyms'];

Seejärel kontrollib see, kas URL-ist jäädvustatud baastee pole välistamisloendis. Kui baastee on selles loendis, lõpeb funktsioon ümbersuunamist teostamata.

  1. Ümbersuunamise loogika: Kui URL-i ei välistata, jätkab funktsioon ümbersuunamisloogikaga. Siin pole siltide ega autorite jaoks eraldi loogikat, kuna ümbersuunamisbaas ($redirect_base) on seatud samaks kui $base_path, mis võib olla URL-i mis tahes vastega osa.
   $redirect_base = $base_path;
   $new_url = home_url($redirect_base);

Uus ümbersuunamise URL on loodud WordPressi abil home_url() funktsioon, lisades mittepagineeritud baastee. Seejärel teostatakse sellele uuele URL-ile 301 püsiv ümbersuunamine, kasutades WordPressi wp_redirect() funktsioon ja skript väljub, et vältida edasist täitmist.

  1. Leheküljega avalehe URL-i haldamineLisaks peamisele tingimusele if kontrollitakse veel URL-e, mis esindavad avalehe lehekülgedega nummerdatud versioone (nt /page/2). Kui selline muster tuvastatakse, suunab skript avalehele ilma lehekülgi jaotamata.
   else if (preg_match('/^\/page\/\d+/', $_SERVER['REQUEST_URI'])) {
       wp_redirect(home_url('/'), 301);
       exit;
   }
  1. Funktsiooni lõppKui ükski ümbersuunamise tingimustest pole täidetud, siis funktsioon lõpeb ilma ühtegi toimingut tegemata ja lehepäring jätkub tavapäraselt.

Kogu see voog tagab, et teatud tüüpi lehekülgedega URL-id (eriti autori- ja sildilehtede omad) suunatakse ümber oma baasteele, parandades seeläbi kasutajakogemust ja saidi struktuuri, võimaldades samal ajal vajadusel erandeid.

Douglas Karr

Douglas Karr on SaaS-i ja tehisintellekti ettevõtetele spetsialiseerunud turundusjuht, kes aitab laiendada turundustegevust, edendada nõudluse genereerimist ja rakendada tehisintellektil põhinevaid strateegiaid. Ta on ettevõtte asutaja ja väljaandja. Martech Zone, juhtiv väljaanne… Veel »
Tagasi üles nupule
lähedal

Adblock tuvastatud

Me toetume reklaamidele ja sponsorlusele, et säilitada Martech Zone tasuta. Palun kaaluge reklaamiblokeerija keelamist või toetage meid taskukohase ja reklaamivaba aastase liikmelisusega (10 USA dollarit):

Registreeru aastaseks liikmeks