Cum să redirecționați definitiv (301) toate cele 404 (lipsă) pagini în htaccess

php-tag

Am încercat să găsesc o soluție pentru a rezolva problemele apărute în consola Google, consolă ce semnala faptul că există un număr de pagini lipsă, care nu mai sunt accesibile pe site și generează eroare de tip 404 (lipsă). Am început cu o documentare și am citit multe postări pe bloguri, forumuri, apoi am încercat soluții diferite, dar tot nu am putut găsi o soluție care să funcționeze și să utilizeze doar reguli în fișierul .htaccess fară nimic altceva. În cele din urmă, am găsit ceva care funcționează utilizând doar reguli în fișierul .htaccess utilizând o combinație de instrucțiuni pe care le-am găsit online. Deci, dacă doriți să redirecționați permanent 301 permanent toate erorile de tip 404 undeva la pagina dvs. de pornire aici este codul pentru fișierul .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]

Trebuie să vă asigurați că apache-ul are “mod rewrite” activat chiar dacă majoritatea găzduitorilor web au această opțiune activă în mod implicit, iar dacă nu este activă puteți să întrebați furnizorul dvs. de găzduire dacă poate activa aceasta opțiune. Acest cod va redirecționa toate paginile care lipsesc la pagina de pornire (radacina site-ului), totuși dacă doriți să redirecționați către o altă pagină, înlocuiți doar slash-ul / linia finală cu pagina dvs. Web (ceva de tipul /redirectionare.html )

Dacă doriți doar să redirecționați anumite pagini despre care știți că lipsesc pentru ca sunt mutate în altă parte, atunci este utilă o singură linie pentru fiecare pagină din .htaccess:

Redirect 301 /blog/old-post-01/ http://domain.com/new-post-01/

Cu toate acestea, acest lucru nu ar funcționa în toate situațiile, deoarece de exemplu dacă nu știm toate URL-urile site-ului și nu reușim să capturăm în vreun fel toate legăturile lipsă pentru un site mare ar trebui să punem o mulțime de linii în fișierul .htaccess.

O soluție pe care am aflat-o este să punem o linie ca aceasta în .htaccess:

ErrorDocument 404 http://site-ul_tau.ro

Această instrucțiune funcționează, dar este o redirecționare de tip 302 nu una de tip 301 care este de preferat. O redirecționare de tip 301 este mai valoroasă pentru motoarele de căutare. Comunică la Google și la celelalte motoare de căutare că aceasta este noua pagină și va fi întotdeauna așa, pentru că vechea pagină nu mai există.

Acest articol cuprinde aproape tot ceea ce am avut nevoie, dar mai util în captarea legăturilor rupte din domenii specifice care vin pe site-ul nostru ar fi să le redirecționăm către pagina corectă

# REDIRECT BROKEN LINKS FROM SPECIFIC DOMAIN

RewriteCond %{REQUEST_FILENAME} .*
RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)?domeniu-problema\. [NC]
RewriteRule (.*) http://domeniu-redirectionat.tld/destinatie.html [R=301,L]
# RewriteRule (.*) – [F,L]

Redirecționarea în WordPress

Au existat o mulțime de soluții pentru WordPress unele folosind php prin plasarea unui cod în index.php deoarece toate paginile trec prin acel fișier. Exista plugin-uri însă pentru WordPress care pot face redirectionare direct pe rădăcina site-ului a tuturor erorilor de tip 404:

All 404 Redirect to Homepage

 

Utilizarea PHP și Htaccess

O altă soluție pe care nu am încercat-o, dar în mod ideal ar trebui să funcționeze ar fi să folosim un script php și un. htaccess,  am putea captura toate erorile 404 în htaccess și le direcționăm spre script-ul nostru și scriptul ar redirecționa 301 la pagina dorită .

Fișier htaccess:
ErrorDocument 404 /mutat_permanent.php
redirect 301 /mutat_permanent.php http://site-ul_tau.ro

 

fișierul mutat_permanent.php:

<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://site-ul_tau.ro/pagina-dorita”);
exit();
?>

Acest lucru ar fi util dacă nu avem instalat modul de rescriere (acel rewrite) în configurația apache a gazdei web.

Deci, sper că am salvat toată lumea o mulțime de timp prin postarea unei soluții de lucru folosind doar htaccess pentru a redirecționa corect toate URL-urile lipsă pe site-ul dvs.!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *