301 redirecționare de la o pagină la alta. Redirecționare folosind directivele modulului mod_rewrite

Regulile sunt date pentru serverul Apache. În reguli: %(QUERY_STRING) - denotă fragmentul URL-ului după semnul întrebării (setarea valorilor parametrilor CGI). Declanșarea unei anumite reguli de redirecționare este determinată de dacă adresa URL a paginii se încadrează sau nu sub această regulă. Despre semnificația anumitor denumiri (^, $, NC etc.).

Mai jos sunt cele mai utilizate reguli pentru configurarea fișierului .htaccess pentru redirecționări 301. Este mai bine să plasați toate regulile după două rânduri:

Opțiuni +FollowSymLinks RewriteEngine Activat RewriteCond %(HTTP_HOST) ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1 RewriteCond %(HTTP_HOST) ^www.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1 Redirecționare 301 /was.php http://www.site.ru/new.php

În acest caz, noua adresă trebuie specificată integral cu http și numele domeniului.

RewriteRule ^dir /dir-new/$1

Să presupunem că adresa paginii arată astfel: http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 , apoi pentru a configura o redirecționare 301 către o nouă adresă, trebuie să utilizați următoarea regulă:

RewriteCond %(QUERY_STRING) ^IBLOCK_ID=1&SECTION_ID=111$ RewriteRule ^dir/index\.php$ /new/sef/?

Dacă unul (sau mai mulți) dintre parametrii GET nu este specificat sau poate avea o valoare arbitrară (în exemplul nostru este SECTION_ID), puteți utiliza următorul cod:

RewriteCond %(QUERY_STRING) ^IBLOCK_ID=1&SECTION_ID=(.*)$ RewriteRule ^dir/index\.php$ /new/sef/?

Dacă doriți să configurați redirecționarea doar pentru adresa http://www.site.ru/dir/, dar în același timp astfel încât pagina http://www.site.ru/dir/index.php?IBLOCK_ID =1 se deschide la vechea adresă, trebuie să utilizați caracterul special $ în regulă.

RewriteRule ^dir/$ http://www.site.ru/new-dir/

Pentru domeniile din zona Federației Ruse, se aplică aceleași reguli, dar toate caracterele chirilice trebuie înlocuite cu un cod alternativ (este în latină). În special, zona .рф în sine este convertită în .xn--p1ai.

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

Și pentru un domeniu din zona Federației Ruse:

RewriteCond %(HTTP_HOST) ^xn-...\.xn--p1ai$ RewriteRule ^(.*)$ http://www.site.ru/$1 RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !\..(1,10)$ RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*)$ http://www.site. ru/$1/ RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_URI) ^(.+)/$ RewriteRule ^(.+)/$ http://www.site.ru/$1 RewriteCond %(HTTP_HOST) ^si-te\.ru$ RewriteRule ^(.*)$ http://www.site.ru/si-te/ RewriteRule ^bitrix/ /bitrix/admin/ RewriteRule ^(.*)$ http://www.newsite.ru/new/ RewriteRule ^dir(.*)$ /new-file.php RewriteRule ^dir/no-file.html /no-file-new.html RewriteRule ^dir(.*)$ /all.php RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php

Specifică ordinea de încărcare a tipurilor de fișiere index situate la rădăcina directorului.

DirectoryIndex index.html index.php index.htm index.shtml RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://www.site.ru/ RewriteCond %(HTTP_HOST) ^test.site.ru$ RewriteRule ^(.*)$ http://site.ru%(REQUEST_URI) RewriteRule [^abc]/unique-file.html /unique-file.html

Codul vă permite să setați o redirecționare 301 din toate folderele precum http://site.ruuniqe-file.html către un fișier din rădăcină /unique-file.html. Poate fi util atunci când reproiectezi un site și schimbi link-uri.

RewriteRule ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11

Codul vă permite să creați o copie a paginii cu adresa relativă /studio/news/detail.php?ID=230354&PAGEN_2=11 la /testovyi/test/

Atenție, este important ca codul de răspuns al serverului pentru o eroare 404 să fie exact 404. Calea către fișier este indicată folosind următoarea linie:

ErrorDocument 404 /404-for-me.php RewriteCond %(HTTP_HOST) ^(+)\.site\.com$ RewriteRule ^(.*) http://site.com/$1 RewriteCond %(HTTP_HOST) ^(+)\.site\.com$ RewriteCond %(HTTP_HOST) !=one.site.com RewriteRule ^(.*) http://site.com/$1

Toate regulile sunt executate în ordinea directă în care apar în fișierul .htaccess, iar regula scrisă mai târziu va fi executată mai târziu.

Pentru site-urile care nu folosesc un server Apache, redirecționări similare 301 pot fi ușor configurate folosind PHP:

Este optim să configurați toate redirecționările imediat către pagina finală (fără redirecționări intermediare, într-un singur pas), acest lucru le îmbunătățește percepția de către motoarele de căutare și utilizatori.

RewriteCond %(HTTP_USER_AGENT) (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|bada| Windows Phone)

RewriteRule (.*) http://mobile.site.ru/

RewriteCond %(HTTP_USER_AGENT) ! (accoona|ia_archiver|antabot|ask\ jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator |jigsaw|webalta|yahoofeedseeker |yahoo!\ slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer)

RewriteRule (.*) http://no-search.site.ru/

Redirecționare de la www.site.ru/component/content/?view=featured către www.site.ru/

RewriteCond %(QUERY_STRING) ^view=featured$ RewriteRule ^component/content/?$ /?

RewriteCond %(QUERY_STRING) ^idc=4&marea=6$ RewriteRule ^index\.php$ /? . - Un punct î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 dintr-un set dat. [^abc]* - exact invers. .* - înlocuiește absolut orice set de caractere. „.*” - va găsi toate subșirurile între ghilimele. ^ - începutul liniei (dacă este folosit la începutul expresiei). $ - indică sfârșitul liniei. \w - literă, număr sau liniuță de subliniere _. \d - înlocuiește orice număr. \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. - aceeași. RewriteRule(.*) $1?

Locul după: RewriteBase /

Un memento al simbolurilor și notațiilor utilizate Linia RewriteCond este o condiție pentru executarea regulii RewriteRule. Dacă condiția este îndeplinită, atunci redirecționarea este declanșată. Regulile pot fi specificate folosind expresii regulate.
Caracterele speciale folosite în reguli și semnificațiile acestora.

^ - caracter special la începutul rândului;
$ - caracter special de sfârșit de linie;
! - caracter special de negație;
. - punct, înlocuiește orice caracter, dar numai unul;
() - grupare;
\ este o bară oblică „escape” următorul caracter după ce este considerat un caracter obișnuit, nu un caracter special.

Modificatorii sunt utilizați după caracterele obișnuite, speciale sau grupurile acestora și vă permit să extindeți capacitățile șabloanelor pentru declanșarea regulilor.

Simbolul se repetă 0 sau 1 dată.
+ - repetat de la 1 la 65536 ori.
* - repetat de la 0 la 65536 ori.

Steaguri care specifică suplimentar opțiunile de utilizat pentru regulă. Acestea sunt enumerate între paranteze pătrate separate prin virgule, să zicem sau .

NC - Indicatorul NoCase, care dezactivează verificarea majusculelor caracterelor atunci când regula este declanșată.
R - Indicatorul de redirecționare, efectuează procesul de oprire a modificării URL și returnează rezultatul. Valoarea cel mai frecvent utilizată este R=301, dar altele sunt posibile pentru redirecționări temporare (302, MUSTAT TEMPORAR).
L - Ultimul steag, oprește formarea URL-ului și linia este considerată finală.

  • Redirecționare 301 – teoria și practica redirecționării, configurarea și regulile de utilizare

UPD:

RewriteCond %(SERVER_PORT) !^443$ RewriteRule .* https://%(SERVER_NAME)%(REQUEST_URI)

RewriteCond %(SERVER_PORT) ^443$ RewriteCond %(HTTPS) =on RewriteRule ^(.*)$ http://your_site.com/$1

Dacă doriți să configurați corect redirecționările 301 pe site-ul dvs. Astăzi v-am pregătit un ghid pas cu pas în care spunem și arătăm toate detaliile și nuanțele.

Ghidul de redirecționare 301 constă din două părți:

— Infografice vizuale, detaliate

— Un articol cu ​​exemple de cod și ghidul în sine (dacă aveți nevoie imediat de un exemplu de cod, este mai bine să defilați imediat prin infografic)

Ce este o redirecționare?

O redirecționare este o modalitate de a redirecționa utilizatorii și motoarele de căutare către o adresă URL diferită de cea pe care au solicitat-o ​​inițial. Mai jos sunt descrieri ale unora dintre cele mai frecvent utilizate tipuri de redirecționări.

301 mutat permanent

O redirecționare 301 este o redirecționare permanentă care transmite aproximativ 90-99% din sucul link-ului. Această redirecționare indică faptul că pagina a fost mutată la o nouă adresă și că vechea adresă URL ar trebui considerată învechită.

302 găsit (HTTP 1.1) / Mutat temporar (HTTP 1.0)

Redirecționarea 302 este o redirecționare temporară. Această redirecționare transmite 0% din sucul link-ului și, în majoritatea cazurilor, nu ar trebui folosită. În prezent, Internetul rulează pe protocolul HTTP, care determină modul în care sunt procesate adresele URL. În cele două versiuni ale acestui protocol, acest răspuns de server are o stare de răspuns diferită:

- HTTP 1.0: răspunsul serverului 302 este „Mutat temporar” - documentul curent a fost mutat temporar la o altă adresă URL.

- HTTP 1.1: răspunsul serverului s-a schimbat în „Găsit” - documentul curent a fost găsit.

307 Mutat temporar (numai HTTP 1.1)

Redirecționarea 307 în protocolul HTTP 1.1 a devenit receptorul redirecționării 302. În timp ce roboții de căutare obișnuiți vor începe să-l trateze ca fiind analog cu 302, pentru aproape toate cazurile este mai bine să utilizați 301. Excepția de la această regulă este atunci când conținutul s-a mutat doar temporar (de exemplu, în timpul întreținerii) și motoarele de căutare deja înțelegeți că serverul dvs. este compatibil cu HTTP 1.1. Dar, deoarece este aproape imposibil să determinați dacă motoarele de căutare și-au dat seama că serverul dvs. este compatibil cu acest nou protocol, este mai bine să utilizați o redirecționare 302 pentru conținutul care a fost mutat temporar.

Alte tipuri de redirecționări

Există și alte tipuri de redirecționări: Meta Refresh sau folosind JavaScript - care sunt efectuate la nivel de pagină, și nu la nivel de server. Iată cum arată o redirecționare tipică Meta Refresh:

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

Pentru a fuziona de la fără www la cu www:

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

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

Pentru a alege corect ce opțiune să lipiți, este recomandabil să vă uitați la:

— care dintre aceste opțiuni este mai în top?
— care opțiune are mai multe pagini în index?

Canonizarea unei bare oblice la sfârșitul unei adrese URL

Când proiectați un site web, este important să decideți asupra unui format, folosind o bară oblică la sfârșitul adresei URL, deoarece pentru motoarele de căutare există 2 adrese URL de formular:

— http://www.site.com/cat1/

— http://www.site.com/cat1

sunt diferite. Prin urmare, după ce ați decis exact cum îl veți avea pe site, atunci trebuie să introduceți următoarele redirecționări

Pentru a elimina bara oblică finală:

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

Redirecționarea unei pagini către o altă pagină:

RewriteCond %(THE_REQUEST) ^(3,9)\ /([^/]+/)*(implicit|index|principal)\.(html|php|htm)\ HTTP/ RewriteRule ^(([^/]+ /)*)(implicit|principal|index)\.(html|php|htm)$ http://www.site.com/$1

Redirecționare director

Dacă structura dvs. de director este afișată în url, atunci dacă faceți re-catalogare, adresa URL se va schimba în consecință. În acest caz, trebuie să introduceți următoarea redirecționare:

RewriteRule old-catalog /(.*) / old-catalog /$1

Redirecționați când schimbați extensia fișierului

Dacă te-ai mutat brusc pe altă platformă sau CMS și doar extensia URL-urilor s-a schimbat, atunci în acest caz această redirecționare te va ajuta

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

Astfel, toate domeniile precum www.site.ru, www.site.net, test.site.com vor fi redirecționate către site-ul www.site.com.

Cum să eliminați mai multe bare oblice/liniute dintr-o adresă URL

Uneori, „din întâmplare” pot apărea mai multe bare oblice în adresa URL, de exemplu, www.site.com/catalog////page-1.html. În astfel de cazuri, trebuie să faceți o redirecționare 301 către o pagină cu un slasher www.site.com/catalog/page-1.html:

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

Cum să redirecționați de la orice adresă URL la o adresă URL numai cu litere mici

Deoarece motoarele de căutare țin cont de cazul literelor, atunci când proiectează un site este de dorit ca toate adresele URL să fie cu litere mici. Cu toate acestea, dacă inițial ați omis acest punct, atunci cel mai bine este să utilizați următorul cod pentru o redirecționare la nivel de script php:

$lowerURI=strtolower($_SERVER["REQUEST_URI" ]); if($_SERVER["REQUEST_URI" ]!=$lowerURI) ( header("HTTP/1.1 301 mutat permanent" ); header("Locație: http://" . $_SERVER["HTTP_HOST" ] . $lowerURI); Ieșire();

$lowerURI=strtolower($_SERVER["REQUEST_URI"]); if($_SERVER["REQUEST_URI"]!=$lowerURI) ( header("HTTP/1.1 301 mutat permanent"); header("Locație: http://" . $_SERVER["HTTP_HOST"] . $lowerURI); Ieșire();

Cum se trece la un domeniu nou? Strategia optimă de redirecționare 301

Strategia optimă pentru trecerea la un nou domeniu, ținând cont de dorințele celor două motoare de căutare principale Runet, Yandex și Google, este:

— redirecționare 301 pagină cu pagină de la vechiul site la cel nou.
— în acest caz, nu redirecționăm fișierul, ci scriem directiva Gazdă în noul domeniu din el.

Apoi, codul pentru configurarea unei redirecționări pe vechiul site poate arăta astfel:

RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) !^www\.site\.com RewriteRule ^(.*)$ http://www.site .com/$1 și fișierul robots.txt pentru vechiul site: User-agent: Yandex Disallow: Gazdă: newsite.com

Se generează 301 redirecționări

Dacă nu sunteți foarte priceput din punct de vedere tehnic, atunci puteți utiliza servicii pentru a genera redirecționări de bază:

Pe astfel de servicii, puteți doar să introduceți propriile date și să primiți imediat cod gata făcut pentru redirecționări între domenii, directoare sau URL-uri.

Cum se verifică redirecționarea 301

După fiecare modificare a logicii redirecționării 301, trebuie să verificați funcționalitatea site-ului:

— site-ul funcționează deloc: accesați pagina principală)

- parcurgeți secțiunile și paginile principale ale site-ului

De asemenea, puteți utiliza următoarele servicii pentru a verifica mai amănunțit procesarea redirecționărilor:

Cum și când este mai bine să folosiți redirecționările 301 față de Canonical

Deși există câteva nuanțe, Google oferă niște reguli clare, astfel încât să înțeleagă exact ce vrem să spunem. Într-o situație foarte simplă, așa înțeleg motoarele de căutare aceste instrucțiuni:

301 - Hei, Motoare de căutare: pagina mea nu mai este aici și s-a mutat permanent pe o pagină nouă. Vă rugăm să eliminați pagina veche din index și să transferați greutatea acesteia pe pagina nouă.

Canonical - Hei Motoare de căutare (ca pentru majoritatea motoarelor de căutare): Am mai multe versiuni ale acestei pagini (sau conținut), vă rugăm să indexați doar versiunea paginii care este canonică. Voi păstra alte pagini disponibile pentru ca oamenii să le vadă, dar Motorul de căutare nu le include în indexul dvs. și vă rugăm să treceți ponderea către pagina mea preferată.

Când este mai bine să folosiți o redirecționare 301?

- Implicit este metoda preferată

— Pentru pagini: dacă pagina s-a mutat definitiv sau a fost înlocuită cu o nouă adresă

— Pentru domenii: dacă site-ul s-a mutat pe un domeniu nou (vânzarea site-ului, rebranding etc.)

— Pentru 404 pagini și conținut care și-a pierdut relevanța (supus conținutului corespunzător). De exemplu, dacă un produs este eliminat dintr-un anumit catalog, puteți redirecționa către un produs similar sau către categoria URL căreia i-a aparținut acest produs.

Când este mai bine să folosiți rel="canonical"?

— Când redirecționările 301 nu pot fi implementate sau implementarea lor va dura prea mult

— Paginile cu mai multe adrese URL diferite sunt în esență o singură pagină (de exemplu, sortarea unui catalog, urmărirea linkurilor afiliate, ...)

— Între domenii, când ambele site-uri sunt similare, dar conținut similar trebuie lăsat pe fiecare dintre domenii.

Total

Erori la utilizarea redirecționărilor

— Orice redirecționare în mai mulți pași. Dacă este posibil, este recomandabil să evitați redirecționările în mai mulți pași, astfel încât să funcționeze mai rapid și să fie transferat sucul maxim de link.

— Folosirea unui tip greșit de redirecționări. Atunci când alegeți un tip de redirecționare, trebuie să țineți cont de nuanțele fiecăruia dintre ele.

— Implementarea redirecționărilor interne fără modificarea legăturilor către adrese noi. După implementarea tuturor redirecționărilor pe site-ul dvs., trebuie să verificați dacă fiecare pagină a site-ului dvs. are deja linkuri către una nouă și că în cadrul site-ului nu aveți legături către paginile de pe care are loc redirecționarea.

— Redirecționați către pagini/conținut nerelevant. Este întotdeauna indicat să plasați o redirecționare pe pagina cea mai relevantă: fie pe o pagină similară, fie pe o ramură a directorului/secțiunii căreia i-a aparținut această pagină.

— Nu este alegerea potrivită să utilizați rel=canonic vs 301 redirecționare. Vezi deasupra.

Fișierul de configurare .htaccess este o configurație pentru serverele web Apache. Majoritatea site-urilor de găzduire funcționează prin acest server, așa că fiecare site are acest fișier. Webmasterii pot controla parțial funcționarea acestuia făcând propriile modificări. În acest articol ne vom uita la directivele și regulile care pot fi modificate în funcționarea serverului.

Cel mai important fișier .htaccess se află la rădăcina site-ului:

Acțiunile sale se aplică directorului curent și tuturor subdirectoarelor. Acestea. Proprietarii de site-uri au posibilitatea de a influența numai activitatea proiectului lor, fără a interfera cu activitatea întregului server. Dacă acest fișier lipsește, acesta poate fi creat folosind orice bloc de note. Principalul lucru este că numele fișierului ar trebui să fie „.htaccess” - fără formate .txt, .doc etc.

Folosind fișierul .htaccess, redirecționările 301 sunt cel mai adesea configurate la nivel de server, ceea ce accelerează foarte mult procesul de mutare la o pagină nouă, deoarece nu este nevoie să încărcați o pagină intermediară. De asemenea, specifică ce fișier procesează eroarea 404.

Mai jos ne vom uita la toate opțiunile comune pentru redirecționări prin .htaccess și mai întâi ne vom familiariza cu opțiunile și regulile.

Pentru a putea lucra cu redirecționări, trebuie să activați modulul ReWriteEngine. Pentru a face acest lucru, trebuie să scrieți două linii de cod (de preferință chiar în partea de sus a fișierului .htaccess):

Opțiuni +FollowSymLinks RewriteEngine Activat

Plasați aceste linii în partea de sus a fișierului dvs. .htaccess pentru a putea lucra cu directivele modulului mod_write.

De asemenea, modulele mod_alias trebuie să fie activate pe găzduire (pentru a accepta Redirect, RedirectPermanent și RedirectMatch).

1. Regulile Redirecționare, RewriteRule și RewriteCond 1.1. Directiva de redirecționare

Sintaxa redirecționării:

Redirecționează /de la http://to_full_address

Redirecționarea setează o redirecționare directă de la o pagină la alta.

Codul de redirecționare este scris în stare. Este un parametru opțional. Cel mai adesea scriu 301, ceea ce semnalează o schimbare permanentă a adresei paginii.

Este important ca pagina „de la” să fie scrisă într-un format fără a indica adresa completă a site-ului, dar indicând adresa URL relativă completă începând cu o bară oblică „/” (adică de la rădăcina site-ului). Pagina în care merge redirecționarea trebuie să fie scrisă în întregime, de exemplu. adresa URL absolută a paginii (adică cu numele domeniului și protocolul http sau https).

De exemplu

Redirecționare 301 /oldpage.php http://site/newpage.php

De asemenea, puteți scrie altfel

RedirectPermanent 301 /oldpage.php http://site/newpage.php sau Redirect permanent 301 /oldpage.php http://site/newpage.php 1.2. Directiva RewriteRule

Directiva RewriteRule stabilește regulile de tranziție. Sintaxa este următoarea:

RewriteRule Pattern Substitution [coduri]
  • Când are loc o redirecționare externă, adresa URL din linia browserului se schimbă - " "
  • Cu intern - nu modifică adresa URL în linia browserului - " " sau " [L] "
1.3. Directiva RewriteCond

Directiva RewriteCond definește condițiile în care sunt executate regulile din RewriteRule.

Condiție RewriteCond Comparison_String

De exemplu, acești termeni ar putea fi browserul utilizatorului, adresa IP, titlul etc.

1.4. Directiva RedirectMatch

Directiva RedirectMatch este similară cu Redirect, singura diferență fiind că vă permite să scrieți expresii regulate.

RedirectMatch De unde la 2. Exemple de redirecționări 301 în .htaccess

Ne-am uitat deja la multe exemple cu o redirecționare .htaccess în articole:

  • Schimbarea adresei site-ului - redirecționarea de la vechiul domeniu la cel nou

Aici vom adăuga opțiuni pentru redirecționări care nu existau încă.

2.1. Redirecționează de la o pagină la alta

Redirecționați de la site.ru/cat/oldpage la site.ru/newpage.html

RewriteRule ^cat/oldpage.* /newpage.html

Sau a doua varianta:

Redirecționare 301 /cat/oldpage http://www.site.com/newpage.php 2.2. Redirecționează de la toate fișierele .htm către .html RewriteCond %(REQUEST_FILENAME) !-f RewriteRule ^(.*)\.htm$ $1.html

Sau a doua varianta:

RewriteRule ^(.*)\.htm$ $1.html 2.3. Redirecționează întregul director către o altă pagină

Orice pagină din directorul și subdirectoarele /vechiul/ va fi redirecționată către /new.php

RewriteRule ^old(.*)$ /new.php 2.4. Eliminarea barelor oblice suplimentare dintr-o adresă URL

De exemplu, pagina /catalog///stranica.html este accesibilă și se deschide. Pentru a evita această situație și pentru a nu crea un număr infinit de duplicate, ar trebui să scrieți următoarea redirecționare

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2 2,5. Rescrie fără redirecționare

Puteți încărca o altă pagină fără a modifica adresa URL a paginii. De exemplu, să încărcăm pagina /news.html, iar bara de adrese va afișa adresa /news/happy

RewriteRule ^news/happy.* /news.html [L] 2.6. Adăugarea unei bare oblice la sfârșitul adresei paginii de pornire

De exemplu, multe servere funcționează în așa fel încât ultima bară oblică să nu fie scrisă în URL. De exemplu, http://site.ru. Codul de mai jos rezolvă această problemă: site-ul se va deschide la http://site.ru/

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/ 2.7. Se elimină directorul director din URL

De exemplu, pentru a redirecționa de la pagina site.com/directoriya/stranica.html la site.com/stranica.html trebuie să introduceți următoarele:

RewriteRule ^directoriya/(.+)$ http://site.com/$1

Sau a doua varianta:

RewriteCond %(DOCUMENT_ROOT)/directoriya/$1 -f RewriteRule ^(.*)$ directoriya/$1 2.8. Redirecționează parametrii GET

De exemplu, redirecționați de la pagina /?act=page&id=2 la /page-2/

RewriteCond %(QUERY_STRING) act=page RewriteCond %(QUERY_STRING) id=(\d+) RewriteRule .* /page/%1/? ] 2.9. Redirecționați către versiunea mobilă a site-ului m.site.ru

În acest exemplu, faptul că utilizatorul a deschis site-ul de pe un dispozitiv mobil (HTTP_USER_AGENT) este mai întâi verificat, apoi adresa site-ului este înlocuită cu m.URL

RewriteCond %(HTTP_HOST) ^(.*)$ RewriteCond %(HTTP_USER_AGENT) (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib| symbian|wireless|nokia|hand|mobi|telefon|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx |panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto |iphone|android) RewriteRule ^$ http://m.%1 2.10. Redirecționare dintr-un subdomeniu

De exemplu, să redirecționăm din orice pagină a subdomeniului poddomen.site.ru către domeniul principal site.ru

RewriteCond %(HTTP_HOST) ^poddomen.site.ru$ RewriteRule ^(.*)$ http://site.ru%(REQUEST_URI) 3. Alte exemple cu htaccess 3.1. Respinge adresa IP și browser

Vom interzice deschiderea site-ului pentru un utilizator care utilizează un browser IE cu adresa IP 172.111.222.55

RewriteCond %(HTTP_USER_AGENT) MSIE RewriteCond %(REMOTE_ADDR) ^172\.111\.222\.55$ RewriteRule ^.*$ - [F] 3.2. Respinge un anumit fișier

Să dezactivăm fișierul disable_file.html pentru toată lumea:

nega din toate 3.3. Permite accesul de la un IP

Accesul va fi permis doar de la o singură adresă IP 172.111.222.55

comanda refuza, permite refuzul de la toate permit de la 172.111.222.55 3.4. Interziceți accesul de la IP-uri diferite

Interziceți accesul la site de la mai multe adrese IP 172.112.222.55, 172.113.222.55, 172.114.*.*

comanda refuza, permite refuza din toate refuza de la 172.112.222.55 refuza de la 172.113.222.55 refuza 172.114.*.* 3.5. Adresa URL de redirecționare de la caractere mari la cele mici

Toate majusculele din adresa URL vor fi convertite în litere mici.

RewriteRule - RewriteRule! - RewriteRule ^([^A]*)A(.*)$ $1a$2 RewriteRule ^([^B]*)B(.*)$ $1b$2 RewriteRule ^([^C]*)C(.* )$ $1c$2 RewriteRule ^([^D]*)D(.*)$ $1d$2 RewriteRule ^([^E]*)E(.*)$ $1e$2 RewriteRule ^([^F]*) F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^ I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 RewriteRule ^([^O]*)O(.*)$ $1o$2 RewriteRule ^([^P]*)P(.*)$ $1p$2 RewriteRule ^([^Q]*)Q( .*)$ $1q$2 RewriteRule ^([^R]*)R(.*)$ $1r$2 RewriteRule ^([^S]*)S(.*)$ $1s$2 RewriteRule ^([^T] *)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^( [^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y $2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 RewriteRule - [N] RewriteCond %(ENV:HASCAPS) TRUE RewriteRule ^/?(.*) /$1

O redirecționare 301 este o metodă de redirecționare permanentă a motoarelor de căutare și a vizitatorilor site-ului către o adresă diferită de cea solicitată inițial. Acest răspuns de server indică faptul că vechiul URL nu mai este relevant și că pagina a fost mutată. După reindexare, Yandex și Google vor înțelege unde doriți să conduceți vizitatorii și vor începe să ofere utilizatorilor o nouă adresă.

Surprinzător, dar adevărat: cu ajutorul unei redirecționări, poți transforma o pierdere într-o victorie și poți atrage și mai mult trafic către resursa ta. Dar mai multe despre asta mai târziu.

Dacă doriți să configurați corect o redirecționare 301, asigurați-vă că studiați ghidul nostru pas cu pas cu exemple de cod pentru toate cazurile și diverse hack-uri de viață.

Pentru ce este folosită o redirecționare 301?

Codul 301 este o opțiune eficientă, ușor de implementat pentru redirecționarea unei pagini web. Aceasta este o modalitate convenabilă de a menține clasarea unei anumite pagini de pe un site.

Principalele motive pentru a adăuga o redirecționare 301 sunt:

  • stocarea „semnalelor de utilizator acumulate” de conținut
  • cu transferul de link juice la o pagină nouă;
  • redirecționarea traficului de la alte adrese către cea dorită;
  • in cazul rebrandingului si schimbarii domeniului, pentru a nu pierde clienti;
  • pagini în mișcare;
  • lipire (cu și fără www, http și https);
  • eliminarea paginilor duplicate.

Atenţie! Alegeți o adresă care este mai importantă din punct de vedere strategic și care este preferată de vizitatori și de motoarele de căutare.

O redirecționare poate fi numită un fel de salvator. Dacă întregul site sau paginile individuale sunt mutate, acesta va păstra toate roadele muncii depuse: autoritatea numelui de domeniu și clasamentele de căutare. Principalul lucru este să utilizați redirecționarea așa cum este prevăzut.

Astăzi veți primi 22 de exemple specifice de instalare a unui cod 301 și cinci recomandări importante. Să începem cu ultimele!

Important! Erorile din setările de redirecționare reduc efectul utilizării acestora.

1. Evitați redirecționările care vin una după alta. Fiecare redirecționare ulterioară crește sarcina pe server și reduce eficacitatea redirecționărilor.


Cea corectă din acest exemplu ar trebui să fie o redirecționare de la pasul 1 la pasul 3.

2. Plasați regulile de redirecționare de la regulile private la cele generale, deoarece contradicțiile dintre cele private și cele generale pot face ca acestea să nu funcționeze. Dacă cele particulare sunt mai mici decât cele generale, în cazul unor reguli conflictuale, cele generale vor funcționa ca cele care vin pe primul loc pe listă.

3. Datorită faptului că browserele își amintesc de obicei redirecționările, este mai bine să verificați codul de stare HTTP printr-un serviciu special.

4. Redirecționarea nu trebuie să fie ciclică, adică pagina nu se poate referi la ea însăși.

Un exemplu de redirecționare ciclică: dintr-o pagină fără bară oblică la sfârșitul adresei URL există o redirecționare 301 către o pagină cu bară oblică, pe care există o redirecționare 302 înapoi:


5. O redirecționare utilă este aceea care duce la o pagină care repetă pagina solicitată în toate nuanțele ei.

Tipuri populare de redirecționări

Vrei să știi cum să faci o redirecționare? Mai întâi trebuie să vă familiarizați cu numele și caracteristicile celor mai utilizate stări.

301

Aceasta este o redirecționare permanentă, care indică faptul că adresa veche a paginii ar trebui considerată învechită, iar conținutul se află într-o locație nouă. Transferă aproape toată (nu există date exacte) greutatea legăturii către noul document și lipește valorile interne acumulate.

302

Aceasta este o redirecționare temporară. Nu îmbină valorile interne acumulate ale paginii.

Starea răspunsului serverului depinde de versiunea protocolului HTTP:

  • HTTP 1.0 - publicația curentă este mutată temporar într-o altă adresă URL (Moved Temporarily);
  • HTTP 1.1 - documentul nu a fost găsit (răspunsul se modifică la Found).
307

307 Mutat temporar este potrivit doar pentru cazuri excepționale - mutarea cu adevărat pe termen scurt a conținutului, de exemplu, în timpul întreținerii.

Meta reîmprospătare

Actualizările meta sunt redirecționări care nu se fac la nivel de server, ci pe pagina în sine. Cel mai adesea, acest cod de răspuns este asociat cu o numărătoare inversă de cinci secunde, însoțită de textul „Dacă conversia nu a avut loc în cinci secunde, faceți clic aici”.

Important! Nu este nevoie să utilizați o redirecționare permanentă dacă mutarea dvs. este temporară sau este legată de probleme cu vechiul nume de domeniu. Dacă primiți un ban sau un filtru, veți transfera problemele anterioare la o nouă adresă.

Care este diferența dintre redirecționările permanente și alte redirecționări?

Redirecționările 302 și 301 sunt similare. Cu toate acestea, pentru cele mai multe cazuri, redirecționarea permanentă va fi soluția optimă.

Aceste coduri de răspuns HTTP nu sunt percepute în mod egal de roboți și, în consecință, au efecte diferite asupra rezultatelor căutării. O redirecționare 301 este un semn că motorul de căutare ar trebui să uite de vechea adresă și să nu o mai viziteze niciodată. Iar 302 semnalează continuarea indexării conținutului aflat pe pagina solicitată inițial.
În cazul unei redirecționări 301, publicația care nu mai este relevantă nu va mai fi afișată în rezultatele căutării. Cu o redirecționare 302, ambele pagini vor fi prezente în index.

De fapt, este mai bine să setați întotdeauna codul la 301.

  • pagina solicitată conține link-uri care trebuie să fie indexate în continuare;
  • indexarea noii pagini nu este critică.
Experiență practică: 301 redirecționări față de 302

Statutul 302 este o măsură temporară care informează motoarele de căutare că vechea pagină este în curs de lucrări tehnice și ar trebui păstrată în rezultatele căutării.

Să ne uităm la un exemplu. Site-ul a schimbat zona de domeniu și apoi a achiziționat și protocolul https securizat. Cu toate acestea, dezvoltatorii nu au înființat o redirecționare permanentă, ci temporară.

În timpul funcționării redirecționării 302, au existat 3 copii ale aceluiași site de Internet în indexul Yandex și Google. Din această cauză, a avut loc o scădere semnificativă a pozițiilor.

Când eroarea a fost corectată, roboții au îmbinat duplicatele, excluzând paginile suplimentare din rezultatele lor. Site-ul a revenit din nou în TOP.

Redirecționare 301 vs Canonical

În ciuda anumitor nuanțe, motoarele de căutare au stabilit reguli clare pentru utilizarea comenzilor. Iată cum le înțeleg Google și Yandex:

  • 301 - „Pagina mea s-a mutat pentru totdeauna în alt loc, nu se va întoarce. Vă rugăm să o scoateți din index și să transferați greutatea într-un document nou.”
  • Canonical - „Am mai multe versiuni ale conținutului paginii. Vă rugăm să scanați copia mea prioritară, pe care am marcat-o drept canonică. Materialele rămase vor fi, de asemenea, disponibile utilizatorilor, dar nu trebuie să fie indexate.”
Când este mai bine să folosiți o redirecționare 301:
  • Aceasta este cea mai bună metodă implicită;
  • pentru eroarea 404 și conținut care nu mai este relevant, dar încă are
  • legături externe și mult trafic;
  • la schimbarea unui domeniu ca urmare a rebranding-ului sau a vânzării unei resurse;
  • pentru o pagină care s-a mutat pentru totdeauna.
Cazuri de utilizare pentru rel="canonical":
  • dacă articolul are duplicate de care vizitatorii au nevoie, de exemplu, de descrieri
  • aceleași produse, dar culori diferite;
  • când redirecționarea permanentă este dificil de implementat;
  • pentru domenii încrucișate cu articole similare;
  • la adrese diferite ale aceluiaşi conţinut (sortare catalog).
Unde este configurată o redirecționare 301?

În funcție de motor, redirecționarea se poate face în moduri diferite.

.htaccess sau httpd.conf pentru Apache

Această metodă este populară datorită simplității sale pentru a o implementa, trebuie să creați un fișier numit .htaccess în folderul site-ului. Sau editați dacă este deja furnizat de motor.

Important! Înainte de a face orice modificare, faceți o copie de rezervă a fișierului pe care îl editați (sau a întregului site)

Pentru redirecționare permanentă, scrieți la începutul fișierului, înlocuind datele dvs.:

  • Redirecționați întregul site către o altă adresă:

Redirecționare / http://new-site.ru/

  • Redirecționare de la o pagină la alta:

Redirecționare 301 /page-1.html /page-2.html

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

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

  • Redirecționare de la HTTP la HTTPS

RewriteEngine Pornit
RewriteCond %(HTTPS) dezactivat
RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

Vă rugăm să rețineți că atunci când lucrați cu un fișier, comanda apare la nivel de server care rulează Linux sau Apache cu modulul Mod_rewrite activat.

Puteți modifica redirecționarea .htaccess cu fișierul de configurare hpptd.conf. În acest caz, va fi posibil să creați mai puțină încărcare pe server, dar webmasterii de obicei nu au acces la acesta.

Prin pluginuri în CMS

O redirecționare către un alt site este ușor de configurat folosind un plugin special. Deci, extensia Simple 301 Redirects este potrivită pentru WordPress. Singurul dezavantaj al modulului suplimentar este crearea manuală a unei liste de adrese pentru redirecționare.


Prin condiția PHP

Această soluție este potrivită pentru cei care cunosc perfect structura unui proiect web și înțeleg PHP. Dacă site-ul este realizat pe un CMS, încercați să deschideți fișierul index.php în rădăcina motorului și să scrieți acolo:

if ($_SERVER [ "REQUEST_URI" ] == "/index.php" ) (
header("Locație: /", TRUE, 301);
Ieșire();
}

(indicați adresa URL veche în prima linie și cea nouă în a doua)

Alternativ, redirecționarea PHP se poate face prin trimiterea antetelor (script):

redirecționare ASP


redirecționare ASP.NET

Găsiți fișierul web.config în rădăcina site-ului dvs. și inserați sintaxa în secțiunea:

< script runat= “server ”>
private void Page_Load (expeditor obiect, System.EventArgs e)
{
Răspuns .Stare = „301 Mutat permanent”;
Răspuns .AddHeader („Locație”, „http: //www.new-url.com”);
}

Redirecționare ColdFusion