301 redirecționare în htaccess a anumitor pagini. Redirecționați folosind directivele modulului mod_rewrite. Redirecționați când schimbați extensia fișierului

Am adunat toate modalitățile posibile de a face o redirecționare 310 folosind diferite metode. Poți alege pentru tine orice dorește inima ta.

De fapt, să înțelegem opțiunile pentru a face o redirecționare (redirecționare) corect.

Redirecționare simplă 301 în .htaccess

Dacă serverul dvs. (sau găzduirea) utilizează apache, redirecționările se pot face printr-un fișier. htaccess. Această metodă, după părerea mea, este cea mai simplă și mai convenabilă dintre toate pe care le-am văzut. Important! Nu uitați să activați modulele mod_alias (pentru a suporta regulile Redirect, RedirectPermanent și RedirectMatch) și modulele mod_rewrite în php.ini.

1. Redirecționare simplă de la paginile vechi la cele noi:

Redirecționare 301 /vechi/ http://domain.com/new/ sau Redirecționare permanentă /vechi/ http://domain.com/new/

Singurul dezavantaj este necesitatea de a face toate modificările manual, adică fiecare adresă este scrisă direct de programator.

2. 301 redirecționează către .htaccess pentru link-uri în limba rusă

Singura diferență care mi-a luat mult timp a fost nevoia de a salva documentul cu precizie format uft-8 fără BOM, care este un punct foarte important. Dacă salvați într-un alt format, cel mai probabil redirecționarea dvs. nu va funcționa.

Toate celelalte sunt la fel:

3. Redirecționează cu RedirectMatch

Un mod similar de redirecționare, care este descris mai sus, cu excepția faptului că în acest caz puteți specifica o redirecționare dacă ați transferat site-ul din motor în php în aspx.

RedirectMatch /(php$ /$1.aspx

4. Redirecționarea domeniului de la www la non-www

Opțiuni +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^www.(.*) RewriteRule ^(.*)$ http://%1/$1

altă versiune într-o formă mai simplă:

Opțiuni +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^www.domain.com$ RewriteRule ^(.*)$ http://domain.com/$1

5. Redirecționați cererile fără www către c-www

Opțiuni +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^domain.com$ RewriteRule ^(.*)$ https://domain.com/$1

rezolvă și o problemă similară:

RewriteEngine On RewriteCond %(HTTP_HOST) !^www.(.*) RewriteRule ^(.*)$ https://%1/$1

6. Redirecționați linkurile cu o bară oblică spre fără pentru întregul site

RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) ![^\/]$ RewriteRule ^(.*)\/$ /$1

7. 301 redirecționare ca la punctul 6, dar invers

RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) !\/$ RewriteRule ^(.*[^\/])$ /$1/

8. Îndepărtați bara oblică de la sfârșitul linkului principal dacă este fără www

RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) !\/$ RewriteCond %(HTTP_HOST) ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) ![^\/]$ RewriteCond %(HTTP_HOST) ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) !\/$ RewriteCond %(HTTP_HOST) ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/

9. Îndepărtați bara oblică de la sfârșitul linkului principal dacă este de pe www

RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) !\/$ RewriteCond %(HTTP_HOST) ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) !\/$ RewriteCond %(HTTP_HOST) ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ RewriteCond %(REQUEST_URI) !\? RewriteCond %(REQUEST_URI) !\& RewriteCond %(REQUEST_URI) !\= RewriteCond %(REQUEST_URI) !\. RewriteCond %(REQUEST_URI) ![^\/]$ RewriteCond %(HTTP_HOST) ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1

10. Eliminați /index.php folosind redirecționarea corectă (fără GET)

RewriteCond %(REQUEST_URI) /index.php RewriteCond %(QUERY_STRING) ^\z RewriteRule ^(.*)$ http://site.ru/?

11. Redirecționare 301 pentru toate adresele unde există index.php

RewriteCond %(REQUEST_URI) /index.php RewriteRule ^(.*)$ http://site.ru/

12. Efectuarea unei redirecționări de la o adresă URL dinamică la una statică

opțiunea cu GET

RewriteCond %(QUERY_STRING) ^id=229 RewriteRule ^.*$ /supermodel/?

opțiune fără GET

RewriteCond %(REQUEST_URI) /test/ RewriteCond %(QUERY_STRING) ^id=229 RewriteRule ^.*$ /supermodel/?

13. Redirecționăm toate paginile domeniului către o adresă URL a altui domeniu

RewriteCond %(REQUEST_URI) (.*) RewriteRule ^(.*)$ http://site.ru/

14. Redirecționări pentru SSL (redirecționare de la http la https și invers)

Am scris mai multe despre asta, pe care, în lumina, îmi propun să-l studiez.

RewriteEngine On RewriteCond %(HTTPS) off RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

Redirecționați cu scripturi

Mulți oameni redirecționează folosind scripturi. O selecție mică pentru varietate.

HTTP/1.1 301 Mutat permanent Locație: https://new.com/new-k/new.htm Redirecționare PHP

15. Redirecționări ASP

<%@ Language=VBScript %> <% Response.Status=“301 Moved Permanently” Response.AddHeader “Location”, “https:// seo-blog.com” response.end %>

17. Redirecționare ASP.NET

18. Redirecționare ColdFusion

<.cfheader statuscode=“301” statustext=“Moved permanently”> <.cfheader name=“Location” value=“https://seo-blog.com”>

19. Redirecționare JSP (Java).

<% response.setStatus(301); response.setHeader(“Location”, “https://new.com/”); response.setHeader(“Connection”, “close”); %>

20. CGI PERL

$q = CGI nou; print $q->redirect("https://new.com/"); Ruby on Rails def old_action headers[„Stare”] = „301 Mutat permanent” redirect_to „https://new.com/”

Există, de asemenea, recomandări diferite din motoarele de căutare pentru implementarea redirecționărilor 301. Recomand să folosiți ghidurile Google, care intră în detalii foarte detaliate despre cum să faceți acest lucru cum să configurați o redirecționare 301.

Pentru a plasa redirecționări 301 pe serverele Apache, trebuie doar să schimbați fișierul .htaccess așa cum este descris mai sus. Dacă nu înțelegeți cum funcționează și personajele ghinioniste din descrierea de mai sus sunt un mare mister pentru dvs., contactați furnizorul dvs. de găzduire sau scrieți o întrebare în comentariu.

Cum să faci o redirecționare 301 (redirecționare) în WordPress folosind un plugin

Mulți oameni folosesc unul dintre cele mai populare CMS WordPress. Din diverse motive, este posibil să fie nevoie să redirecționăm în cadrul site-ului. De exemplu, această nevoie a apărut pentru mine când am transferat un site pe un domeniu nou.

Cea mai optimă soluție s-a dovedit a fi un plugin pentru WordPress, care mi-a rezolvat toate problemele. Dezavantajul acestui plugin a fost doar formarea manuală a unei liste de link-uri pentru redirecționare.

În general, pluginul WordPress mi se potrivește destul de bine până astăzi.

Luați în considerare câteva explicații legate de redirecționarea 310

O redirecționare 301, sau eroare de server-301, este răspunsul specificat în antetul HTTP și indică faptul că adresa veche are noua cale permanent.

** Eroarea 303 indică o cale temporară de redirecționare.

O redirecționare este o redirecționare automată a unui vizitator de la un site la altul. Într-un cuvânt, utilizatorul nu se află deloc pe pagina a cărei adresă a tastat-o ​​în bara de căutare.

Redirecționarea este efectuată folosind un script care realizează redirecționarea. Acest truc este util pentru proprietarii de site-uri care doresc să obțină un nume de domeniu mai eufonic.

De exemplu, schimbarea adresei unui magazin online duce la mari pierderi, deoarece unii dintre vizitatori se vor pierde. În acest caz, scriptul rezolvă această problemă: utilizatorii formează și adresa veche, familiară, dar sunt redirecționați către o pagină nouă. O redirecționare va ajuta în cazul în care există o încrucișare a mai multor nume de domenii. Adresa site-ului poate fi introdusă prin specificarea www sau pur și simplu prin tastarea rapidă a numelui principal, dar cu ajutorul scriptului ajung pe aceeași pagină.

Funcția de redirecționare este utilă nu numai ca o modalitate de a menține un trafic bun către magazinele online. Promovarea site-ului a costat proprietarii mult efort, așa că este logic ca aceștia să se străduiască să-și mențină pozițiile. Pentru a crea o întreprindere de succes în cadrul unui magazin online, mai multe site-uri pot fi lipite împreună. Pentru a face acest lucru, utilizați o redirecționare. Această metodă de implementare a funcției de redirecționare, pe de o parte, este foarte rapidă și fiabilă, pe de altă parte, motoarele de căutare tratează site-urile legate cu suspiciune.

De ce se întâmplă asta?

Faptul este că site-urile de căutare sunt mașini care trebuie să indexeze în mod clar toate resursele. Site-urile legate îngreunează ca indexarea rapidă să fie eficientă, ceea ce, la rândul său, le reduce netezimea.

Cele mai periculoase în acest context sunt site-urile care sunt indexate de roboți, în timp ce direcționează utilizatorul către resursa din care are loc redirecționarea. Dar motoarele de căutare nu percep întotdeauna în mod negativ, fără echivoc, site-urile legate. Este vorba despre caracteristica de redirecționare 301.

Redirecționarea 301 este un serviciu la nivel de server. Este o excepție printre alte funcții similare, deoarece aproape toate motoarele de căutare îl percep ca fiind prietenos. În special, cea mai mare resursă de căutare Google, care este folosită cel mai des, redirecționează favorabil cu un serviciu de redirecționare 301 către pagina dorită.

Motivul pentru care o redirecționare 301 funcționează atât de bine cu motoarele de căutare este că este fundamental diferită de serviciile de optimizare similare. Este proiectat în așa fel încât să funcționeze clar pentru un robot, care este un motor de căutare. Redirecționarea redirecționează către adresa URL a paginii dorite o dată și permanent.

Impactul redirecționărilor 301 asupra promovării SEO

1. Cu redirecționări 301, adresele sunt îmbinate. Roboții motoarelor de căutare și utilizatorii care deschid site-ul într-un browser sunt redirecționați automat către o nouă pagină cu o nouă adresă.

2. La îmbinarea adreselor, noua adresă URL primește întreaga greutate a paginii, masa linkului și valori precum TIC.
O astfel de redirecționare este cea mai bună soluție atunci când migrați un site către un nou sistem de management al conținutului dacă nu doriți să pierdeți poziții și clasamentul site-ului. Blogul meu SEO folosește mai multe tipuri de redirecționări 301 pentru redirecționări.

Asta e tot. Sper că acest articol v-a fost de ajutor. Dacă știți propriile metode de configurare a unei redirecționări, voi fi bucuros să citesc despre ele în comentarii.

Se întâmplă ca o pagină web sau un întreg site să se mute permanent la o nouă adresă URL. În acest caz, trebuie să înregistrați o redirecționare 301. Ce este? O redirecționare 301 este o redirecționare a vizitatorilor și a crawlerelor de la o adresă URL la alta.

Redirecționările 301 sunt de obicei prescrise în următoarele cazuri:

  1. la lipirea oglinzilor site-ului cu www și fără www;
  2. la mutarea site-ului pe un domeniu nou;
  3. la transferul site-ului pe un nou CMS;
  4. la schimbarea adreselor URL ale paginilor;
  5. la eliminarea paginilor duplicate ale site-ului.

În mod ciudat, acest din urmă caz ​​este considerat extrem de rar, deși atunci când elimini duplicatele, o redirecționare 301 ajută ca nimeni alta, cu excepția cazului în care, desigur, ai dorința de a alege codul CMS-ului în sine. Și dacă sunteți implicat în optimizarea site-urilor pentru motoarele de căutare, atunci problema prezenței sau absenței duplicaturilor pe paginile site-ului ar trebui să vă îngrijoreze cu siguranță.

O redirecționare 301 este grozavă prin faptul că trimite pr-ul paginii și site-ului și, prin urmare, sucul link-ului, către noua adresă URL. Dar, pe de altă parte, nu transferă sancțiunile impuse vechiului domeniu de motoarele de căutare, ceea ce este de două ori plăcut.

Deci, ne-am dat seama ce este o redirecționare 301. Să mergem direct la cum să o facem.

Cum se configurează o redirecționare 301

Pentru început, voi enumera operatori de expresii regulate, care va fi util atunci când configurați redirecționări 301.

  • ^ — restricție la stânga;
  • $ — restricție pe dreapta;
  • * - 0 sau mai multe caractere;
  • + - 1 sau mai multe caractere;
  • . - orice personaj;
  • \ - ecranare;
  • () este o variabilă;
  • - intervalul de valori.

Există diferite moduri de a face o redirecționare 301. Personal, ca mulți alți webmasteri, îl configurez prin fișierul .htaccess. Aproape fiecare CMS popular are acest fișier și este situat în rădăcina site-ului dvs. Puteți descărca .htaccess folosind clientul FileZila:

Fișierul .htaccess trebuie deschis cu un editor de text, cum ar fi Notepad++. Pe lângă toate codurile de redirecționare, ar trebui să scrieți următoarea linie:

Rescrierea motorului pornit

În caz contrar, redirecționările nu vor funcționa.

Mulți cred în mod eronat că vă puteți descurca fără o redirecționare 301. Vă pot spune că este esențial atunci când optimizați aproape fiecare site. De exemplu, absolut fiecare site este disponibil inițial la două adrese - cu www și fără www. Problema este că acest lucru duce la estomparea masei de referință. O să explic de ce. Alte site-uri nu le pasă care dintre cele două ortografii ale domeniului tău este cea principală. Dacă vă pun linkuri, atunci adresa poate prescrie atât o variantă cu www, cât și fără www. Masa de linkuri va fi în cele din urmă neclară, iar motoarele de căutare vor indexa oricum o singură opțiune. Cândva, ei le percepeau în general ca site-uri complet diferite.

Pentru ca site-ul dvs. să crească în mod activ în poziții și să nu piardă masa de linkuri, trebuie să înregistrați 301 redirecționări în fișierul .htaccess.

www la non-www:

RewriteCond %(HTTP_HOST) ^www.site.ru$ RewriteRule (.*) http://site.ru/$1

De la fără www la www:

RewriteCond %(HTTP_HOST) ^site.ru$ RewriteRule (.*) http://www.site.ru/$1

Dacă codurile de redirecționare de mai sus nu funcționează, atunci utilizați următoarea intrare pentru a redirecționa de la www la non-www:

RewriteCond %(HTTP_HOST) ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1

Amintiți-vă că în loc de site.ru trebuie să înregistrați domeniul site-ului dvs. După pașii de mai sus, salvați fișierul .htaccess și încărcați-l pe server, înlocuind fișierul vechi cu acesta.

Redirecționările 301 mă ajută foarte des atunci când mă confrunt cu pagini duplicat de site. Și fac asta aproape de fiecare dată când efectuez optimizarea internă a următorului site. Personal, nu am întâlnit încă un CMS care să nu genereze duplicate. Deși dacă vorbim de un site mic, atunci există și excepții. Habar nu ai despre ce vorbesc acum? Atunci abonați-vă la, în curând voi scrie un articol întreg despre duplicate.

Se întâmplă ca o pagină de site să fie disponibilă imediat la două adrese URL ale formularului: http://site.ru/category/page.html și http://site.ru/page.html. În acest caz, vorbim despre duplicate. De exemplu, dorim ca pagina să fie disponibilă numai la adresa de al doilea fel. În acest caz, pentru a scăpa de duplicat, trebuie să înregistrați următoarea redirecționare:

RewriteRule ^(.*)category/page.html$ http://site.ru/page.html

Acum imaginați-vă situația în care ați schimbat adresa paginii site-ului. Pentru ce? Da, pot fi multe motive diferite. De exemplu, recent am făcut acest lucru pentru a scurta lungimea URL-ului. Pentru a face acest lucru, aveți nevoie de următoarea redirecționare:

RewriteRule ^(.*)old-page.html$ http://site.ru/new-page.html

Dacă codul de redirecționare de mai sus nu funcționează, încercați următoarele:

RewriteRule ^old-page.html$ http://site.ru/new-page.html

Sau cam asa:

RewriteRule ^old-page.html$ /new-page.html

Dacă trebuie să faci redirecționează de la vechiul URL în chirilic la o nouă adresă URL (cel puțin în chirilică, chiar și în latină), atunci intrarea va arăta astfel:

RewriteRule ^old-url.html /new-page.html

După cum puteți vedea, mai sus am luat în considerare redirecționează de la o adresă URL la alta în cadrul aceluiași site. Pentru a face acest lucru, am folosit mod_rewrite și directiva RewriteRule. Dar vă puteți descurca cu o versiune mai simplă a înregistrării de redirecționare folosind directiva Redirecționare:

Redirecționare 301 /old-page.html http://site.ru/new-page.html

Ambele variante ale introducerii de redirecționare sunt corecte și trec greutatea linkului și alți indicatori. Ele diferă doar prin faptul că folosesc directive de la module diferite și, prin urmare, au o sintaxă diferită. Când utilizați directiva de redirecționare, vechea adresă a paginii fără http://site.ru este mai întâi scrisă, iar apoi noua adresă este completă.

Este posibil să aveți nevoie de o redirecționare 301 când mutați un site din domeniul vechi la nou:

RewriteEngine on RewriteCond %(HTTP_HOST) ^www\.old-domen\.ru$ RewriteRule ^(.*)$ http://new-domen.ru/$1 RewriteCond %(HTTP_HOST) ^old-domen\.ru$ RewriteRule ^(.*)$ http://new-domen.ru/$1

O redirecționare similară folosind directiva Redirecționare:

Redirecționare 301 / http://new-domain.ru

Puteți scrie o redirecționare 301 URL cu un parametru către orice altă pagină de pe site, de exemplu, cea principală:

RewriteCond %(QUERY_STRING) ^cPath=373_703 RewriteRule ^index\.php$ http://site.ru/?

Exemplul de mai sus este din practica mea când optimizam intern un site Joomla care avea un număr mare de duplicate diferite.

Redirecţiona de la site.ru/index.php la site.ru(scapam de duplicatul paginii principale):

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.ru/

Ca urmare a prezenței pe pagina principală a site-ului a unui duplicat al formularului site.ru/index.php, pot apărea duplicate similare pe paginile interne ale site-ului, de exemplu, site.ru/index.php/ page.html este un duplicat al paginii site.ru/page.html . În acest caz, toate duplicatele de acest tip pot fi eliminate simultan folosind o redirecționare:

RewriteRule ^index\.php/(.*)$ /$1

Dacă pagina de pornire a site-ului dvs. are duplicat site.ru/main.html, atunci ar trebui să scrieți următoarea redirecționare:

RewriteEngine On RewriteCond %(THE_REQUEST) ^(3,9)\ /main\.html\ HTTP/ RewriteRule ^main\.html$ http://your-sait.ru/

sau aceasta optiune:

Redirecționare 301 /main.html http://site.ru/

Acum imaginați-vă o situație în care doriți totul paginile interne ale site-ului erau accesibile doar la adresa cu .html la final. Atunci ar trebui să scrieți următoarea redirecționare:

RewriteCond %(REQUEST_URI) (.*/[^/.]+)($|\?) RewriteRule .* %1.html RewriteRule ^(.*)/$ /$1.html

Dacă, dimpotrivă, vrei toate interne paginile site-ului aveau o adresă fără .html la sfârșit, adică o adresă a formularului site.ru/page, atunci ar trebui să înregistrați o redirecționare:

RewriteCond %(REQUEST_URI) \.html$ RewriteRule ^(.*)\.html$ /$1

Dacă există o sarcină de redirecționare de la adrese URL cu .htm la sfârșit până la adrese cu .html la sfârșit, atunci următoarea intrare ar trebui adăugată la .htaccess:

RewriteBase / RewriteRule ^(.*)\.htm$ $1.html

Poate fi necesar să faceți redirecționări de la adrese URL fără sufixe la adrese URL cu o bară oblică finală. Apoi, următoarele ar trebui să fie scrise în fișierul .htaccess:

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !\..+$ RewriteCond %(REQUEST_URI) !/$ RewriteRule (.*) http://www.site.ru/$1/

Dacă sarcina este complet opusă și sunt necesare redirecționări de la adrese URL cu o bară oblică la sfârșit la adrese URL fără sufix apoi adauga urmatorul cod:

RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_URI) ^(.+)/$ RewriteRule ^(.+)/$ /$1

Pentru a scrie o redirecționare dintr-o adresă URL cu un parametru cum ar fi http://site.ru/?page_id=111, adăugați următoarele la .htaccess:

RewriteCond %(QUERY_STRING) page_id=111 RewriteRule ^ http://site.ru/new-page/

De asemenea, destul de recent am dat peste un site pentru care a fost obținut un certificat de securitate și a fost necesar să mă înregistrez redirecționare de la http la https:

RewriteCond %(HTTPS) off RewriteRule ^(.*)$ https://%(HTTP_HOST)%(REQUEST_URI)

Acum știi cum să scrii o redirecționare 301. Desigur, există și alte cazuri când este nevoie, dar am enumerat cele mai populare. După orice sarcină legată de optimizarea site-ului, vă recomand să verificați erorile.

Cum se verifică redirecționarea 301

Redirecționările 301 sunt foarte ușor de verificat. Tot ce aveți nevoie este să introduceți adresa veche a paginii în linia browserului. Dacă apare o redirecționare către o nouă adresă URL, atunci cel mai probabil redirecționarea este corectă. În unele cazuri, înainte de a verifica redirecționarea 301, trebuie să ștergeți memoria cache a browserului. Prin urmare, dacă redirecționarea nu are loc, este posibil să fi uitat să o faceți.

Pentru a vă asigura, în sfârșit, că redirecționarea 301 este configurată corect, vă recomand și să verificați răspunsul serverului folosind servicii speciale, de exemplu, 2ip.ru, sau chiar mai bine, folosiți programul Netpeak Spider, cu care puteți afla o mulțime de alte informatii despre site. Răspunsul serverului ar trebui să fie „301” sau „301 MovedPermanently -> 200 OK”.

Sper că acum înțelegeți cum să configurați corect o redirecționare 301. Mai sus am dat un număr suficient de exemple diferite. Dacă un tip de postare de redirecționare nu funcționează, cel mai probabil va funcționa altul. Încerca. Ceea ce determină ce intrare de redirecționare va funcționa, nu pot spune cu siguranță, deoarece nu sunt programator. Poate din CMS sau setările serverului. Locația codului de redirecționare în fișierul .htaccess afectează, de asemenea, uneori. Dacă redirecționarea nu funcționează, încercați să-i mutați codul puțin mai sus în fișier. Asta e tot pentru mine. Mult succes in optimizarea site-ului!

Buna ziua. Este posibil ca mulți dintre voi să știți deja cum să faceți o redirecționare 301 și cum să o configurați. Dar, după cum știți, blogul meu este cheat sheet-ul meu. Prin urmare, cred că nu va fi de prisos să scriu această postare și, atunci când va fi necesar, se va putea aplica pentru aceste informații atât mie, cât și dumneavoastră. Pentru că toate aceste coduri sunt imposibil de reținut și nu este necesar.

Ce este o redirecționare 301 și unde poate fi utilă

Acesta este un fel de redirecționare automată de la o pagină la alta și cu această redirecționare se transmite totul: greutatea paginii, TCI, PR, greutatea masei link-urilor de intrare și așa mai departe. Adică pagina veche este lipită de cea nouă. Un utilizator care a ajuns pe vechea pagină va fi redirecționat automat către cea nouă.

Unde pot fi utile redirecționările 301:

  • Ați decis să vă mutați pe un domeniu nou. În acest caz, se poate face cel mai fără durere cu ajutorul acestui tip de redirecționare.
  • Ai avut un site pe un fel de motor (de exemplu, Joomla). Paginile aveau adresa site.ru/?id=1245. Pe WordPress, aceeași pagină arată ca acest site.ru/rubrika/post.html. Și pentru a nu pierde indicatorii paginilor vechi, trebuie să faceți o redirecționare 301 către pagini noi.
  • Site-ul dvs. este disponibil la 2 adrese, de exemplu cu www și fără www. În acest caz, trebuie să înregistrați și o redirecționare 301.
  • Conținutul de pe pagina veche trebuie transferat pe pagina nouă. Sau, de exemplu, 3 articole mici trebuie combinate într-unul mare. În astfel de cazuri, este, de asemenea, mai bine să transferați la una din cele 3 URL-uri și să înregistrați o redirecționare 301 pe celelalte două.

Cum se face o redirecționare 301 în htaccess

Prefer să fac redirecționări 301 cu fișierul htaccess. Mai mult, nu există doar pe site-urile WordPress, așa că această metodă de redirecționare este universală. Fișierul .htaccess se află la rădăcina site-ului:

Acest fișier este editat cu un editor de text, este mai bine să utilizați .

Atenţie! Pentru începători: dacă nu sunteți complet sigur de acțiunile dvs., asigurați-vă că ați făcut o copie de rezervă a acesteia înainte de a face modificări în fișierul htaccess.

De la WWW la non-WWW (și invers)

Site-ul ar trebui să fie disponibil într-un singur mod: fie cu WWW, fie fără WWW. Este greșit dacă site-ul este „dauit” în două moduri. Trebuie să lași doar unul.

Dacă site-ul este tânăr, este mai bine să alegeți fără WWW, dar dacă este vechi, atunci este mai bine să vă opriți la opțiunea care este indexată. Se întâmplă că în Yandex este indexat cu WWW, iar în Google fără WWW, în acest caz, selectați opțiunea care a „scăpat cu crawlere” în motorul de căutare cel mai prioritar pentru dvs.

Înțelegeți că www.site.ru și site.ru sunt 2 site-uri diferite pentru motoarele de căutare, așa că ar trebui să fie disponibilă o singură opțiune! Cu WordPress, de obicei nu există probleme cu acest lucru, doar 1 opțiune este disponibilă implicit, dar pe alte motoare puteți vedea adesea că site-ul este disponibil în acest fel și în felul ăsta.

Redirecționare 301 de la www la non-www:

RewriteEngine On RewriteCond %(HTTP_HOST) !^www\.(.*) RewriteRule ^(.*)$ http://www.%1/$1

Redirecționare 301 de la un site fără www la cu www:

RewriteEngine On RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1

De la o pagină la alta cu htaccess

Dacă trebuie să setați o redirecționare 301 de la o pagină la alta, trebuie să scrieți acest cod în fișierul htaccess:

Redirecționare 301 /staraya-page.html http://site.ru/novaya-page.html

De la index.php (index.html) la root (pagina principală)

Pe unele motoare, puteți găsi că pagina principală a site-ului este disponibilă și la: site.ru/index.php. Nu este corect. Avem nevoie de această pagină pentru a oferi o redirecționare 301 către pagina principală, iată cum se face (nu uitați să rescrieți „site” în domeniul dvs.).

Dacă c index.php:

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site/

Dacă din index.html:

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://site/

De la http la https:

Dacă trebuie să scrieți o redirecționare 301 de la http la protocolul securizat httpS, utilizați acest cod:

RewriteCond %(HTTPS) off RewriteRule ^(.*)$ https://%(HTTP_HOST)%(REQUEST_URI)

De la o categorie (director/dosar) la alta

Există o nevoie când toate paginile unei anumite categorii trebuie redirecționate către o altă adresă, iată codul:

RedirectMatch 301 ^/category-old/(.*) /category-new/$1

De la un domeniu la altul

Dacă te-ai mutat brusc la un domeniu nou, atunci trebuie să scrii acest lucru în htaccess-ul vechiului domeniu:

RewriteEngine On RewriteCond %(HTTP_HOST) old-domen.ru RewriteRule (.*) http://new-domen.ru/$1

De asemenea, asigurați-vă că specificați noua adresă de site în directiva gazdă.

Redirecționări 301 în WordPress cu pluginul Simplu de redirecționare 301

Dacă site-ul clientului este pe WordPress și el însuși dorește să înregistreze redirecționări 301 pe alocuri, instalez pluginul Simple 301 Redirects. Da, este bun și pentru începători. Pluginul este foarte ușor de utilizat și totul se face în zona familiară de administrare WordPress, așa că această metodă poate părea mai ușoară pentru cineva.

Ieșire

După ce scrieți o redirecționare 301, asigurați-vă că verificați site-ul pentru performanță. O mică greșeală poate face ca întregul dvs. site să nu fie disponibil. Asigurați-vă că faceți copii de rezervă ale fișierului htaccess înainte de a-l schimba sau utilizați CTRL + Z pentru a readuce fișierul în poziția inițială.

Un alt lucru: rețineți că greutatea pentru redirecționările 301 nu este transferată imediat. Da, lipirea este mai rapidă în Google, dar în Yandex totul se întâmplă lent. De obicei, trebuie să așteptați 1 până la 3 luni.

Nu uitați să marcați această pagină. Și bineînțeles, mulțumesc pentru retweeturi.

301 redirecționare sau 301 Redirecționare permanentă este o regulă care redirecționează automat utilizatorul către o altă adresă de pagină. Cu acesta, puteți lipi pagini vechi cu altele noi sau puteți transfera site-ul pe alt domeniu, puteți elimina multe duplicate de pe site și multe altele. Un lucru extrem de util - așa că trebuie să înveți cum să o faci corect!

De asemenea, cu o redirecționare 301, TCI (citește) și PR sunt fuzionate - i.e. puteți stoca valoarea veche la noua adresă. Nu poți pierde deloc în ochii motoarelor de căutare. Să trecem de la teorie la practică.

Cum se configurează o redirecționare 301 în htaccess

Un fișier numit .htaccess se află în categoria principală a site-ului dvs. Acesta este un fișier de serviciu în care vom specifica regulile de lipire. Deschideți fișierul cu notepad (recomand notepad++ astfel încât să nu existe probleme de codare). Nu uitați că acesta este unul dintre punctele importante în .

Șablonul general pentru .htaccess pe care îl vom folosi:

Opțiuni +FollowSymLinks RewriteEngine On #Specify regulile aici

Toate regulile sunt scrise astfel:

RewriteCond [Comparație] [Condiție] [Flags] RewriteCond [Comparație] [Condiție] [Flags] RewriteRule [Pattern] [Substitution] [Flags]

Acum să ne ocupăm direct de redirecționare și să analizăm exemple specifice.

Am scris deja un articol despre, dar pentru orice eventualitate, voi rezuma aici, astfel încât să vă fie mai convenabil să utilizați pagina.

Exemple de utilizare a redirecționărilor 301

Redirecționează de la index.php la pagina principală

Pentru a-l configura, trebuie să scrieți următorul cod în fișierul dvs., care va redirecționa vizitatorii de la site.ru/index.php la site.ru:

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP RewriteRule ^index\.php$ http://site.ru/

Dacă trebuie să redirecționați și de la index.html, atunci pur și simplu înlocuiți .php cu .html în codul de mai sus

Lipirea alias-urilor site-ului

Dacă aveți mai multe domenii și doriți să le redirecționați pe toate către site-ul principal, atunci utilizați:

RewriteCond %(HTTP_HOST) ^your-sait.com$ RewriteCond %(HTTP_HOST) ^www.your-sait.com$ RewriteCond %(REQUEST_URI) !^/robots.* RewriteRule ^(.*)$ http://your- www.sait.ru/$1

Atenție la primele 2 rânduri, există o oglindă în zona .com, dacă aveți o zonă diferită sau mai multe, atunci adăugați regulile.

Redirecționare de la www la fără www

Am descris deja această metodă mai devreme, dar o voi repeta. Pentru a lipi oglinzile și a selecta domeniul principal fără www, prescriem:

RewriteCond %(HTTP_HOST) ^www.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1

Redirecționare de la un domeniu fără www la un domeniu cu www

Această acțiune este opusă celei anterioare, doar oglinda principală este aici www.site.ru:

RewriteCond %(HTTP_HOST) ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1

Redirecționări de 301 pagini cu și fără bare oblice

Acesta este un alt tip de duplicat, aici vom lipi paginile site.ru/category/ și site.ru/category, după cum puteți vedea, nu există nicio bară oblică la sfârșitul celei de-a doua url:

RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_URI) ^(.+)/$ RewriteRule ^(.+)/$ /$1

Dacă trebuie să lăsați o bară oblică la sfârșitul adresei URL, atunci aveți nevoie de această opțiune:

RewriteBase / RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*[^/])$ $1/

Dacă dintr-un motiv oarecare aveți URL-uri precum site.ru/category//article.html, atunci utilizați codul:

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2

unde „//” poate fi înlocuit cu „-” sau cu orice caractere duble din url.

Înlocuire în vrac de categorie

Se întâmplă că ați redenumit o categorie și îi sunt atribuite mii de adrese URL. Pentru a nu îmbătrâni în timp ce scriem mii de redirecționări identice, folosim:

RewriteRule ^(.*)/veche-categorie/(.*)$ 1/nouă-categorie/$2

RewriteRule veche-categorie /(.*) / veche-categorie /$1

Redirecționați către o pagină nouă

Cea mai simplă redirecționare de la o pagină la alta, scrieți-o astfel:

Redirecționare 301 /old-post.html http://new-site.ru/new-post.html

Unde old-post.html este pagina ta veche și new-site.ru/new-post.html este pagina ta nouă și poate fi pe orice domeniu (inclusiv domeniul tău actual).

Redirecționare pentru adresa URL cu parametri

Paginile cu parametri sunt mai greu de redirecționat, să luăm ca exemplu http://site.ru/page.php?sort=articles. Parametrul aici este "sort=articles". Codul va fi după cum urmează:

RewriteCond %(QUERY_STRING) sort=articles RewriteRule .* http://site.ru/page.php?

Lucrul cu extensii

Eliminați .html din url (pentru a elimina .php nu uitați să înlocuiți $1.html cu $1.php):

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

Schimbați .php în .html în URL-uri și invers (nu uitați să schimbați codul):

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Redirecționare 301 corectă către un domeniu nou

Am evidențiat acest punct separat, pentru că. este mai mult despre trecerea la alt domeniu. Există un punct important aici, acesta este să nu ratați directiva pentru editarea roboților - este indicată pe a treia linie a codului.

RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 RewriteCond %(HTTP_HOST) ^www.site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1

Cu ajutorul unor astfel de mașinațiuni deloc complicate, vom scăpa de paginile duplicate, îmbunătățind astfel optimizarea noastră internă și, în consecință, calitatea site-ului.

Dacă aveți întrebări, scrieți în comentarii - vom înțelege 🙂

Adesea, în dezvoltarea web, trebuie să redirecționați de la o pagină (de exemplu, învechită) la alta. În același timp, redirecționarea poate fi efectuată prin diferite metode - atât cu pierderea în greutate a paginii, cât și fără ea. Dar mai multe despre asta.

După cum știți, orice pagină este indexată în timp și are propria sa pondere în rețea. Dacă pagina devine irelevantă, desigur, poate fi ștearsă, dar utilizatorii care au dat clic pe ea vor ajunge într-o secțiune inexistentă a site-ului și în cele din urmă o vor părăsi. Este mai corect să faci redirecționări 301 către secțiuni relevante ale site-ului pe astfel de pagini. În primul rând, utilizatorul nu va vedea eroarea și greutatea paginii vechi va fi transferată complet pe cea nouă.

Redirecționarea paginilor se poate face în diferite moduri. Să le luăm în considerare pe cele principale.

301 redirecționare prin .htaccess

La rădăcina site-ului tău există un fișier (dacă nu există, creează-l) numit .htaccess. Deschideți-l pentru editare și utilizați una dintre următoarele metode.

Redirecționare permanentă și Redirecționare 301 - face cu ușurință redirecționări 301 de la o pagină la alta (sau site). Primul este linkul site-ului vechi (notă – fără domeniu), al doilea este un link către o pagină nouă (care poate fi același site sau chiar unul nou).

Exemple:
Redirecționare permanentă /staraya-stranica.php http://newsait.ru/novaya-stranica.php
(aici pur și simplu redirecționăm de la pagina învechită la cea nouă)

Redirecționare 301 / http://newsait.ru/
(aici / înseamnă că tot ce pornește de la pagina principală a site-ului și toate subpaginile (subdirectoarelor) ale acestuia va fi redirecționat către noul domeniu; adică redirecționarea efectivă de la acest domeniu la altul.)

redirecționare RewriteRule - o redirecționare mai complexă decât opțiunile anterioare. Necesită conectarea modulului mod_rewrite pe găzduire pentru o funcționare corectă (de obicei, întotdeauna activată). Adesea, această metodă este folosită pentru a redirecționa paginile de la www la același fără www și invers. Luați în considerare:

Redirecționarea domeniului de la www la non-www
Opțiuni +FollowSymLinks
Rescrierea motorului pornit
RewriteCond %(HTTP_HOST) ^www\.(.*)
RewriteRule ^(.*)$ http://%1/$1

Redirecționați de la non-www la domeniul cu www
Rescrierea motorului pornit
RewriteCond %(HTTP_HOST) !^www\.(.*)
RewriteRule ^(.*)$ http://www.%1/$1

301 redirecționare de la un domeniu la altul și o excepție pentru linkul /market/vm2_market.xml. Acestea. toate cererile (cu excepția /market/vm2_market.xml) de la vechiul domeniu către cel nou vor fi executate.

Motor de rescrie pornit

301 Toate cererile (cu excepția /market/vm2_market.xml și a linkului /texts (și a tuturor „sublinkurilor”)) de la vechiul domeniu către cel nou vor fi îndeplinite. De asemenea, regula specifică de redirecționare a sublinkurilor funcționează aici (RedirectMatch 301)

Motor de rescrie pornit
RedirectMatch 301 ^/texts/data/msg/(.*)\.png$ http://olddomen.ru/texts/data/rimage/msg.php?id=$1
RewriteCond %(REQUEST_URI) !^/texts*
RewriteCond %(REQUEST_URI) !^/market/vm2_market.xml$
RewriteRule ^(.*)$ http://newdomen.ru/$1

Redirecționare potrivire 301 este o altă metodă bună de redirecționare, este similară cu Redirect 301, dar are mai multe funcționalități. Și anume, poate fi folosit pentru a face redirecționări bazate pe expresii regulate.

Exemple:
RedirectMatch 301 ^/olddirectory/ http://website/newdirectory/
(Aici redirecționează întregul director către cel nou)

RedirectMatch 301 ^(.*)$ http://site-ul web
(Redirecționează toate paginile din vechiul domeniu către cel nou cu o redirecționare 301 (greutatea este transferată și pe noul site))

RedirectMatch 301 (.*)\..php
(Schimbați paginile din extensia html în extensia php)

RedirectMatch 301 /dirA/(.*)\..php
(Declanșează o redirecționare de la dirA la dirB numai atunci când accesați scripturi PHP.
.php -> http://site/dirB/page.php - va funcționa
http://site/dirB/page.html - nu va funcționa)

Sintaxa pentru expresiile regulate
. - Punctul înlocuiește un caracter arbitrar.
- denotă o listă de caractere care se potrivesc cu literele a, b sau c.
[^abc] - o listă de caractere care nu sunt incluse în intervalul specificat. Se potrivește cu orice caracter, cu excepția a, b sau c.
* - înseamnă că caracterul precedent poate fi repetat (de 0 sau de mai multe ori).
* - comanda va găsi caractere consecutive din setul specificat.
[^abc]* - exact invers.

.* - înlocuiește absolut orice set de caractere. „.*” - găsește toate subșirurile între ghilimele.
^ - începutul unui șir (dacă este folosit la începutul unei expresii).
$ - marchează sfârșitul liniei.

\w - literă, număr sau liniuță de subliniere _.
\d - înlocuiește orice cifră.
\D - înlocuiește orice caracter, dar nu un număr.
- înlocuiește orice număr.
- orice literă de la a la z (întregul set de caractere latine) cu litere mici.
- orice literă de la A la Z cu majuscule.
- orice literă de la a la Z în orice caz.
- la fel.

Caracterele speciale utilizate în reguli și semnificațiile acestora.
^ - caracterul special al începutului de linie;
$ - caracter special de sfârșit de linie;
! - negaţie caracter special;
. - punct, înlocuiește orice caracter, dar numai unul;
() - grupare;
\ - bară oblică „escape”, următorul caracter după acesta este considerat un caracter obișnuit, nu un caracter special.

Modificatorii sunt folosiți după caracterele obișnuite, speciale sau grupurile acestora și vă permit să extindeți posibilitățile șabloanelor pentru declanșarea regulilor.
? - caracterul se repetă de 0 sau 1 ori.
+ - se repetă de la 1 la 65536 de ori.
* - se repetă de la 0 la 65536 de ori.

Steaguri, setați suplimentar. opțiunile de utilizat pentru regulă. Acestea sunt enumerate între paranteze pătrate separate prin virgule, să zicem sau .
NC - flag NoCase, care dezactivează verificarea majusculei caracterelor atunci când regula este declanșată.
R - flag Redirect, efectuează procesul de oprire a modificării URL-ului și returnează rezultatul. Valoarea cel mai frecvent utilizată este R=301, dar altele sunt posibile pentru redirecționări temporare (302, MUSTAT TEMPORAR).
L - flag În sfârșit, oprește formarea URL-ului și linia este considerată finală.

Redirecționare prin php. Dacă aveți o pagină php obișnuită care trebuie redirecționată către o nouă adresă, atunci puteți face fără .htaccess

Exemplu:

header("Locație: http://site/categorie/"); Ieșire(); ?>

Redirecționare prin javascript. De asemenea, puteți redirecționa folosind javascript obișnuit (deși fără a trece greutatea paginii).

Exemplu:

(redirecționare obișnuită către pagina site-ului)

(redirecționare obișnuită către pagina site-ului înaintea căreia utilizatorului i se arată un mesaj)

  • Serghei Savenkov

    un fel de recenzie „rare”... parcă s-ar grăbi undeva