301 přesměrování ze stránky na stránku. Přesměrování pomocí direktiv modulu mod_rewrite

Pravidla jsou dána pro server Apache. V pravidlech: %(QUERY_STRING) - označuje fragment adresy URL za otazníkem (nastavení hodnot parametrů CGI). Spuštění konkrétního pravidla přesměrování je určeno tím, zda adresa URL stránky spadá pod toto pravidlo či nikoli. O významu určitých označení (^, $, NC atd.).

Níže jsou uvedena nejpoužívanější pravidla pro nastavení souboru .htaccess pro přesměrování 301. Je lepší umístit všechna pravidla na dva řádky:

Možnosti +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1 RewriteCond %(HTTP_HOST) ^www.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1 Přesměrování 301 /was.php http://www.site.ru/new.php

V tomto případě musí být nová adresa uvedena celá s http a názvem domény.

RewriteRule ^dir /dir-new/$1

Řekněme, že adresa stránky vypadá takto: http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 , pak pro nastavení přesměrování 301 na novou adresu musíte použít následující pravidlo:

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

Pokud jeden (nebo více) parametrů GET není zadán nebo může mít libovolnou hodnotu (v našem příkladu je to SECTION_ID), můžete použít následující kód:

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

Pokud chcete nastavit přesměrování pouze pro adresu http://www.site.ru/dir/, ale zároveň tak, aby stránka http://www.site.ru/dir/index.php?IBLOCK_ID =1 se otevře na staré adrese, musíte v pravidle použít speciální znak $.

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

Pro domény v zóně Ruské federace platí stejná pravidla, ale všechny znaky azbuky musí být nahrazeny alternativním kódem (je v latince). Konkrétně samotná zóna .рф je převedena na .xn--p1ai.

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

A pro doménu v zóně Ruské federace:

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

Určuje pořadí načítání typů indexových souborů umístěných v kořenovém adresáři adresáře.

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

Kód vám umožňuje nastavit přesměrování 301 ze všech složek, jako je http://site.ruuniqe-file.html, do jednoho souboru v kořenovém adresáři /unique-file.html. To může být užitečné při redesignu webu a změně odkazů.

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

Kód vám umožňuje vytvořit kopii stránky s relativní adresou /studio/news/detail.php?ID=230354&PAGEN_2=11 na /testovyi/test/

Pozor, je důležité, aby kód odezvy serveru pro chybu 404 byl přesně 404. Cesta k souboru je uvedena pomocí následujícího řádku:

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

Všechna pravidla se provádějí v přímém pořadí, v jakém jsou uvedena v souboru .htaccess, a později napsané pravidlo bude provedeno později.

Pro weby, které nepoužívají server Apache, lze podobná přesměrování 301 snadno nakonfigurovat pomocí PHP:

Optimální je nakonfigurovat všechna přesměrování ihned na finální stránku (bez mezilehlých přesměrování, v jednom kroku), zlepšuje to jejich vnímání vyhledávači a uživateli.

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\telefon)

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| |jigsaw|webalta|yahoofeedseeker |yahoo!\ slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer)

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

Přesměrování z www.site.ru/component/content/?view=featured na www.site.ru/

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

RewriteCond %(QUERY_STRING) ^idc=4&marea=6$ RewriteRule ^index\.php$ /? . - Tečka nahrazuje libovolný znak. - označuje seznam znaků odpovídajících písmenům a, b nebo c. [^abc] – seznam znaků, které nejsou zahrnuty v zadaném rozsahu. Odpovídá libovolnému znaku kromě a, b nebo c. * - znamená, že předchozí znak se může opakovat (0 nebo vícekrát). * - příkaz vyhledá po sobě jdoucí znaky z dané sady. [^abc]* - přesně naopak. .* - nahradí absolutně jakoukoli znakovou sadu. ".*" - najde všechny podřetězce mezi uvozovkami. ^ - začátek řádku (pokud je použit na začátku výrazu). $ - označuje konec řádku. \w - písmeno, číslo nebo podtržítko _. \d - nahradí libovolné číslo. \D - nahradí jakýkoli znak, ale ne číslo. - nahradí libovolné číslo. - jakékoli písmeno od a do z (celá latinská znaková sada) malými písmeny. - libovolné písmeno od A do Z velkými písmeny. - v každém případě jakékoli písmeno od a do Z. - stejný. RewriteRule(.*) $1?

Místo za: RewriteBase /

Připomenutí použitých symbolů a zápisů Řádek RewriteCond je podmínkou pro provedení pravidla RewriteRule. Pokud je podmínka splněna, spustí se přesměrování. Pravidla lze specifikovat pomocí regulárních výrazů.
Speciální znaky používané v pravidlech a jejich významy.

^ - speciální znak na začátku řádku;
$ - speciální znak na konci řádku;
! - zvláštní negační charakter;
. - tečka, nahrazuje libovolný znak, ale pouze jeden;
() - seskupení;
\ je „escapující“ lomítko, další znak po něm je považován za běžný znak, nikoli za speciální znak.

Modifikátory se používají po běžných, speciálních znacích nebo jejich skupinách a umožňují rozšířit možnosti šablon pro spouštění pravidel.

Symbol se opakuje 0 nebo 1krát.
+ - opakováno od 1 do 65536 krát.
* - opakuje se od 0 do 65536krát.

Příznaky, které určují další možnosti použití pravidla. Jsou uvedeny v hranatých závorkách oddělených čárkami, řekněme nebo .

NC - příznak NoCase, který zakáže kontrolu velkých a malých písmen při spuštění pravidla.
R - Příznak přesměrování, provede proces zastavení změny URL a vrátí výsledek. Nejčastěji používaná hodnota je R=301, ale pro dočasná přesměrování jsou možné i jiné (302, MOVED TEMPORARY).
L - Poslední příznak, zastaví tvorbu URL a řádek je považován za konečný.

  • Přesměrování 301 – teorie a praxe přesměrování, nastavení a pravidla použití

UPD:

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

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

Pokud chcete správně nakonfigurovat přesměrování 301 na vašem webu. Dnes jsme připravili průvodce krok za krokem, ve kterém řekneme a ukážeme všechny detaily a nuance.

Průvodce přesměrováním 301 se skládá ze dvou částí:

— Vizuální, detailní infografika

— Článek s příklady kódu a samotným průvodcem (pokud okamžitě potřebujete příklad kódu, je lepší okamžitě procházet infografikou)

Co je přesměrování?

Přesměrování je způsob, jak přesměrovat uživatele a vyhledávače na jinou adresu URL, než kterou původně požadovali. Níže jsou uvedeny popisy některých nejběžněji používaných typů přesměrování.

301 Trvale přesunuto

Přesměrování 301 je trvalé přesměrování, které přenáší asi 90–99 % šťávy z odkazu. Toto přesměrování znamená, že stránka byla přesunuta na novou adresu a stará adresa URL by měla být považována za zastaralou.

302 nalezeno (HTTP 1.1) / dočasně přesunuto (HTTP 1.0)

Přesměrování 302 je dočasné přesměrování. Toto přesměrování přenáší 0 % šťávy z odkazu a ve většině případů by se nemělo používat. V současné době internet funguje pomocí protokolu HTTP, který určuje způsob zpracování URL. Ve dvou verzích tohoto protokolu má tato odpověď serveru jiný stav odpovědi:

- HTTP 1.0: Odpověď serveru 302 je „Dočasně přesunuto“ – aktuální dokument byl dočasně přesunut na jinou adresu URL.

- HTTP 1.1: odpověď serveru se změnila na „Nalezeno“ - aktuální dokument byl nalezen.

307 dočasně přesunuto (pouze HTTP 1.1)

Přesměrování 307 v protokolu HTTP 1.1 se stalo příjemcem přesměrování 302. Zatímco běžní vyhledávací roboti s ním začnou zacházet jako s analogem 302, pro téměř všechny případy je nejlepší použít 301. Výjimkou z tohoto pravidla je situace, kdy se obsah skutečně přesunul pouze dočasně (například během údržby) a vyhledávače již pochopit, že váš server je kompatibilní s HTTP 1.1. Ale protože je téměř nemožné určit, zda si vyhledávače skutečně uvědomily, že váš server je kompatibilní s tímto novým protokolem, je lepší použít přesměrování 302 pro obsah, který byl dočasně přesunut.

Jiné typy přesměrování

Existují také další typy přesměrování: Meta Refresh nebo pomocí JavaScriptu – které se provádějí na úrovni stránky, nikoli na úrovni serveru. Typické přesměrování Meta Refresh vypadá takto:

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

Sloučení z bez www do s www:

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

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

Aby bylo možné správně vybrat, kterou možnost lepit, je vhodné se podívat na:

— která z těchto možností je více nahoře?
— která možnost má v indexu více stránek?

Kanonifikace lomítka na konci adresy URL

Při navrhování webu je důležité rozhodnout se pro jeden formát pomocí lomítka na konci URL, protože pro vyhledávače existují 2 URL formuláře:

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

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

jsou rozdílní. Proto poté, co se přesně rozhodnete, jak to na webu budete mít, musíte zadat následující přesměrování

Chcete-li odstranit koncové lomítko:

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

Přesměrování jedné stránky na jinou stránku:

RewriteCond %(THE_REQUEST) ^(3,9)\ /([^/]+/)*(výchozí|index|hlavní)\.(html|php|htm)\ HTTP/Pravidlo přepsání ^(([^/]+ /)*)(výchozí|hlavní|index)\.(html|php|htm)$ http://www.site.com/$1

Přesměrování adresáře

Pokud je vaše adresářová struktura zobrazena v adrese URL, pak pokud provedete novou katalogizaci, adresa URL se odpovídajícím způsobem změní. V tomto případě musíte zadat následující přesměrování:

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

Přesměrování při změně přípony souboru

Pokud jste se náhle přesunuli na jinou platformu nebo CMS a změnilo se pouze rozšíření URL, pak vám v tomto případě pomůže toto přesměrování

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

Všechny domény jako www.site.ru, www.site.net, test.site.com budou tedy přesměrovány na web www.site.com.

Jak odstranit více lomítek/pomlček z adresy URL

Někdy se „náhodou“ může v adrese URL objevit několik lomítek, například www.site.com/catalog////page-1.html. V takových případech musíte provést přesměrování 301 na stránku s jedním slasherem www.site.com/catalog/page-1.html:

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

Jak přesměrovat z libovolné adresy URL na adresu URL pouze malými písmeny

Vzhledem k tomu, že vyhledávače berou v úvahu velká a malá písmena, při navrhování stránek je žádoucí, aby všechny adresy URL byly malými písmeny. Pokud jste však tento bod původně přehlédli, je nejlepší použít následující kód pro přesměrování na úrovni skriptu php:

$lowerURI=strtolower($_SERVER["REQUEST_URI" ]); if($_SERVER["REQUEST_URI" ]!=$lowerURI) ( header("HTTP/1.1 301 Trvale přesunuto" ); header("Umístění: http://" . $_SERVER["HTTP_HOST" ] . $lowerURI); výstup();

$lowerURI=strtolower($_SERVER["REQUEST_URI"]); if($_SERVER["REQUEST_URI"]!=$lowerURI) ( header("HTTP/1.1 301 Trvale přesunuto"); header("Umístění: http://" . $_SERVER["HTTP_HOST"] . $lowerURI); výstup();

Jak přejít na novou doménu? Optimální strategie přesměrování 301

Optimální strategie pro přesun na novou doménu s ohledem na přání dvou hlavních vyhledávačů Runet Yandex a Google je:

— stránka po stránce 301 přesměrování ze starého webu na nový.
— v tomto případě soubor nepřesměrováváme, ale zapisujeme v něm direktivu Host na novou doménu.

Pak může kód pro nastavení přesměrování na starém webu vypadat takto:

RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) !^www\.site\.com RewriteRule ^(.*)$ http://www.site .com/$1 a soubor robots.txt pro starý web: User-agent: Yandex Disallow: Host: newsite.com

Generování přesměrování 301

Pokud nejste příliš technicky zdatní, můžete využít služby pro generování základních přesměrování:

Na takových službách můžete zadat pouze svá vlastní data a okamžitě obdržíte hotový kód pro přesměrování mezi doménami, adresáři nebo URL.

Jak zkontrolovat přesměrování 301

Po každé změně v logice přesměrování 301 musíte zkontrolovat funkčnost webu:

— funguje stránka vůbec: přejděte na hlavní stránku)

- projděte si hlavní sekce a stránky webu

Pro důkladnější kontrolu zpracování přesměrování můžete využít také následující služby:

Jak a kdy je lepší používat přesměrování 301 vs Canonical

Přestože existují určité nuance, Google poskytuje určitá jasná pravidla, aby přesně pochopil, co chceme říci. Ve velmi jednoduché situaci takto vyhledávače chápou tyto pokyny:

301 - Ahoj, vyhledávače: moje stránka zde již není a trvale se přesunula na novou stránku. Odstraňte prosím starou stránku z indexu a přeneste její váhu na novou stránku.

Canonical - Hey Search Engines (jako u většiny vyhledávačů): Mám několik verzí této stránky (nebo obsahu), indexujte prosím pouze verzi stránky, která je kanonická. Ostatní stránky ponechám k dispozici, aby je lidé viděli, ale Vyhledávač je nezahrnujte do svého indexu a váhu prosím předejte mé preferované stránce.

Kdy je lepší použít přesměrování 301?

- Výchozí je preferovaná metoda

— Pro stránky: pokud se stránka trvale přesunula nebo byla nahrazena novou adresou

— Pro domény: pokud se web přesunul do nové domény (prodej webu, změna značky atd.)

— Pro 404 stránek a obsah, který ztratil svou relevanci (s výhradou vhodného obsahu). Pokud je například produkt odstraněn z určitého katalogu, můžete se přesměrovat na podobný produkt nebo na kategorii URL, do které tento produkt patřil.

Kdy je lepší použít rel="canonical"?

— Když přesměrování 301 nelze implementovat nebo jejich implementace bude trvat příliš dlouho

— Stránky s několika různými adresami URL jsou v podstatě jedna stránka (například třídění katalogu, sledování přidružených odkazů, ...)

— Mezi doménami, kdy jsou obě stránky podobné, ale na každé z domén musí zůstat podobný obsah.

Celkový

Chyby při použití přesměrování

— Jakékoli vícekrokové přesměrování. Pokud je to možné, je vhodné se vyhnout vícekrokovým přesměrování, aby to fungovalo rychleji a přeneslo se maximum odkazové šťávy.

— Použití nesprávného typu přesměrování. Při výběru typu přesměrování je třeba vzít v úvahu nuance každého z nich.

— Implementace interních přesměrování bez změny odkazů na nové adresy. Po implementaci všech přesměrování na vašem webu musíte zkontrolovat, že každá stránka vašeho webu již odkazuje na novou a že v rámci webu nemáte odkazy na stránky, ze kterých k přesměrování dochází.

— Přesměrování na nerelevantní stránky/obsah. Vždy je vhodné umístit přesměrování na nejrelevantnější stránku: buď na podobnou stránku, nebo na větev adresáře/sekce, do které tato stránka patřila.

— Není to správná volba použít přesměrování rel=canonical vs 301. Viz výše.

Konfigurační soubor .htaccess je konfigurace pro webové servery Apache. Většina hostingových webů pracuje přes tento server, takže každý web má tento soubor. Webmasteři mohou částečně řídit jeho chod vlastními změnami. V tomto článku se podíváme na směrnice a pravidla, která lze v provozu serveru změnit.

Nejdůležitější soubor .htaccess se nachází v kořenovém adresáři webu:

Jeho akce se vztahují na aktuální adresář a všechny podadresáře. Tito. Majitelé stránek mají možnost ovlivnit pouze práci svého projektu, aniž by zasahovali do práce celého serveru. Pokud tento soubor chybí, lze jej vytvořit pomocí libovolného poznámkového bloku. Hlavní věc je, že název souboru by měl být ".htaccess" - bez formátů .txt, .doc atd.

Pomocí souboru .htaccess se přesměrování 301 nejčastěji konfigurují na úrovni serveru, což značně urychluje proces přesunu na novou stránku, protože není třeba načítat mezistránku. Také určuje, který soubor zpracuje chybu 404.

Níže se podíváme na všechny běžné možnosti přesměrování přes .htaccess a nejprve se seznámíme s možnostmi a pravidly.

Abyste mohli pracovat s přesměrováním, musíte povolit modul ReWriteEngine. Chcete-li to provést, musíte napsat dva řádky kódu (nejlépe úplně nahoře v souboru .htaccess):

Možnosti +FollowSymLinks RewriteEngine On

Umístěte tyto řádky na úplný začátek vašeho .htaccess souboru, abyste mohli pracovat s direktivami modulu mod_write.

Na hostingu musí být povoleny také moduly mod_alias (pro podporu Redirect, RedirectPermanent a RedirectMatch).

1. Pravidla Redirect, RewriteRule a RewriteCond 1.1. Direktiva přesměrování

Syntaxe přesměrování:

Přesměrujte /z http://na_úplnou_adresu

Přesměrování nastavuje přímé přesměrování z jedné stránky na druhou.

Přesměrovací kód je zapsán ve stavu. Je volitelný parametr. Nejčastěji píšou 301, což signalizuje trvalou změnu adresy stránky.

Je důležité, aby stránka „od“ byla napsána ve formátu bez uvedení celé adresy webu, ale s uvedením úplné relativní adresy URL začínající lomítkem „/“ (tj. z kořenového adresáře webu). Stránku, kam jde přesměrování, je potřeba napsat celou, tzn. absolutní adresa URL stránky (tj. s názvem domény a protokolem http nebo https).

Například

Přesměrování 301 /oldpage.php http://site/newpage.php

Můžete to napsat i jinak

RedirectPermanent 301 /oldpage.php http://site/newpage.php nebo Redirect permanent 301 /oldpage.php http://site/newpage.php 1.2. Direktiva RewriteRule

Direktiva RewriteRule nastavuje pravidla přechodu. Syntaxe je následující:

Nahrazení vzoru RewriteRule [kódy]
  • Když dojde k externímu přesměrování, změní se adresa URL v řádku prohlížeče – „ “
  • S interním - nemění URL v řádku prohlížeče - " " nebo "[L] "
1.3. Direktiva RewriteCond

Direktiva RewriteCond definuje podmínky, za kterých se provádějí pravidla v RewriteRule.

Podmínka RewriteCond Comparison_String

Těmito pojmy mohou být například prohlížeč uživatele, IP adresa, titul atd.

1.4. Direktiva RedirectMatch

Direktiva RedirectMatch je podobná direktivě Redirect, jediný rozdíl je v tom, že umožňuje psát regulární výrazy.

RedirectMatch From Where To 2. Příklady přesměrování 301 v .htaccess

Na mnoho příkladů s přesměrováním .htaccess jsme se již podívali v článcích:

  • Změna adresy webu - přesměrování ze staré domény na novou

Zde přidáme možnosti pro přesměrování, které dosud neexistovaly.

2.1. Přesměrování z jedné stránky na druhou

Přesměrujte z site.ru/cat/oldpage na site.ru/newpage.html

RewriteRule ^cat/oldpage.* /newpage.html

Nebo druhá možnost:

Přesměrování 301 /cat/oldpage http://www.site.com/newpage.php 2.2. Přesměrování ze všech souborů .htm na .html RewriteCond %(REQUEST_FILENAME) !-f RewriteRule ^(.*)\.htm$ $1.html

Nebo druhá možnost:

RewriteRule ^(.*)\.htm$ $1.html 2.3. Přesměrujte celý adresář na jinou stránku

Jakákoli stránka v adresáři /old/ a podadresářích bude přesměrována na /new.php

RewriteRule ^old(.*)$ /new.php 2.4. Odstranění přebytečných lomítek z adresy URL

Například stránka /catalog///stranica.html je přístupná a otevře se. Abyste se této situaci vyhnuli a nevytvářeli nekonečné množství duplikátů, měli byste napsat následující přesměrování

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2 2,5. Přepsat bez přesměrování

Můžete načíst jinou stránku bez změny adresy URL stránky. Načteme například stránku /news.html a v adresním řádku se zobrazí adresa /news/happy

RewriteRule ^news/happy.* /news.html [L] 2.6. Přidání koncového lomítka na konec adresy domovské stránky

Mnoho serverů například funguje tak, že poslední lomítko není zapsáno v URL. Například http://site.ru. Níže uvedený kód řeší tento problém: stránka se otevře na adrese http://site.ru/

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/ 2.7. Odebrání adresáře z adresy URL

Chcete-li například přesměrovat ze stránky site.com/directoriya/stranica.html na stránku site.com/stranica.html, musíte zadat následující:

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

Nebo druhá možnost:

RewriteCond %(DOCUMENT_ROOT)/directoriya/$1 -f RewriteRule ^(.*)$ directoriya/$1 2.8. Přesměrování parametrů GET

Například přesměrujte ze stránky /?act=page&id=2 na /page-2/

RewriteCond %(QUERY_STRING) act=page RewriteCond %(QUERY_STRING) id=(\d+) RewriteRule .* /page/%1/? ] 2.9. Přesměrujte na mobilní verzi webu m.site.ru

V tomto příkladu je nejprve zkontrolována skutečnost, že uživatel otevřel web z mobilního zařízení (HTTP_USER_AGENT), a poté je adresa webu nahrazena 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|bezdrátové|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. Přesměrování ze subdomény

Pojďme například přesměrovat z libovolné stránky subdomény poddomen.site.ru na hlavní doménu site.ru

RewriteCond %(HTTP_HOST) ^poddomen.site.ru$ RewriteRule ^(.*)$ http://site.ru%(REQUEST_URI) 3. Další příklady s htaccess 3.1. Odepřít IP adresu a prohlížeč

Zakážeme otevření stránky uživateli pomocí prohlížeče IE s IP adresou 172.111.222.55

RewriteCond %(HTTP_USER_AGENT) MSIE RewriteCond %(REMOTE_ADDR) ^172\.111\.222\.55$ RewriteRule ^.*$ - [F] 3.2. Odepřít konkrétní soubor

Zakažme soubor disable_file.html pro všechny:

odmítnout všechny 3.3. Povolit přístup z jedné IP

Přístup bude povolen pouze z jedné IP adresy 172.111.222.55

order deny,allow deny from all allow from 172.111.222.55 3.4. Zakázat přístup z různých IP adres

Odepřít přístup na stránku z několika IP adres 172.112.222.55, 172.113.222.55, 172.114.*.*

order deny,allow deny from all odepřít od 172.112.222.55 zakázat od 172.113.222.55 zakázat 172.114.*.* 3.5. Přesměrování URL z velkých znaků na malé

Všechna velká písmena v URL budou převedena na malá písmena.

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 Pravidlo přepsání ^([^J]*)J(.*)$ $1j$2 Pravidlo přepsání ^([^K]*)K(.*)$ $1k$2 Pravidlo přepsání ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 Pravidlo přepsání ^([^O]*)O(.*)$ $1o$2 Pravidlo přepsání ^([^P]*)P(.*)$ $1p$2 Pravidlo přepsání ^([^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

Přesměrování 301 je metoda trvalého přesměrování vyhledávačů a návštěvníků webu na adresu, která se liší od adresy původně požadované. Tato odpověď serveru znamená, že stará adresa URL již není relevantní a stránka byla přesunuta. Po opětovném indexování Yandex a Google pochopí, kam nyní chcete návštěvníky vést, a začnou uživatelům nabízet novou adresu.

Překvapivě, ale pravdivě: pomocí přesměrování můžete prohru proměnit ve vítězství a přilákat ke svému zdroji ještě větší provoz. Ale o tom později.

Pokud chcete správně nastavit přesměrování 301, určitě si prostudujte našeho podrobného průvodce s příklady kódu pro všechny případy a různé life hacky.

K čemu se používá přesměrování 301?

Code 301 je efektivní a snadno implementovatelná možnost přesměrování webové stránky. Je to pohodlný způsob, jak udržovat hodnocení konkrétní stránky na webu.

Hlavní důvody pro přidání přesměrování 301 jsou:

  • ukládání „nashromážděných uživatelských signálů“ obsahu
  • s přenosem odkazové šťávy na novou stránku;
  • přesměrování provozu z jiných adres na požadovanou;
  • v případě rebrandingu a změny domény, aby nedošlo ke ztrátě zákazníků;
  • přesouvání stránek;
  • lepení (s www, http a https a bez nich);
  • odstranění duplicitních stránek.

Pozornost! Vyberte si adresu, která je strategicky důležitější a je preferována návštěvníky a vyhledávači.

Přesměrování lze nazvat druhem životabudiče. Pokud se přesune celý web nebo jednotlivé stránky, zachová si všechny plody vykonané práce: autoritu názvu domény a hodnocení ve vyhledávání. Hlavní věc je použít přesměrování podle plánu.

Dnes obdržíte 22 konkrétních příkladů instalace kódu 301 a pět důležitých doporučení. Začněme těmi posledními!

Důležité! Chyby v nastavení přesměrování snižují účinek jejich použití.

1. Vyvarujte se přesměrování přicházejících jedno po druhém. Každé další přesměrování zvyšuje zátěž serveru a snižuje efektivitu přesměrování.


Správné v tomto příkladu by mělo být přesměrování z kroku 1 na krok 3.

2. Umístěte pravidla přesměrování ze soukromých pravidel na obecná, protože rozpory mezi soukromými a obecnými mohou způsobit, že nebudou fungovat. Pokud jsou konkrétní nižší než obecná, v případě konfliktních pravidel budou obecná fungovat jako první na seznamu.

3. Vzhledem k tomu, že si prohlížeče většinou pamatují přesměrování, je lepší zkontrolovat stavový kód HTTP přes speciální službu.

4. Přesměrování by nemělo být cyklické, to znamená, že stránka nemůže odkazovat sama na sebe.

Příklad cyklického přesměrování: ze stránky bez lomítka na konci URL je přesměrování 301 na stránku s lomítkem, na které je přesměrování 302 zpět:


5. Užitečné přesměrování je takové, které vede na stránku, která opakuje požadovanou stránku ve všech jejích nuancích.

Populární typy přesměrování

Chtěli byste vědět, jak provést přesměrování? Nejprve se musíte seznámit s názvy a vlastnostmi nejpoužívanějších stavů.

301

Toto je trvalé přesměrování, což znamená, že stará adresa stránky by měla být považována za zastaralou a obsah je na novém místě. Přenese téměř celou (neexistují žádná přesná data) váhu odkazu do nového dokumentu a slepí dohromady nashromážděné interní metriky.

302

Toto je dočasné přesměrování. Neslučuje nashromážděné interní metriky stránky.

Stav odezvy serveru závisí na verzi protokolu HTTP:

  • HTTP 1.0 - aktuální publikace je dočasně přesunuta na jinou adresu URL (Přesunuto dočasně);
  • HTTP 1.1 - dokument nenalezen (odpověď se změní na Found).
307

307 Moved Temporarily je vhodné pouze pro výjimečné případy - skutečně krátkodobé přesunutí obsahu, například při údržbě.

Meta Refresh

Meta aktualizace jsou přesměrování, která se neprovádějí na úrovni serveru, ale na samotné stránce. Nejčastěji je tento kód odpovědi spojen s pětisekundovým odpočítáváním doprovázeným textem „Pokud ke konverzi nedošlo do pěti sekund, klikněte sem.“

Důležité! Pokud je váš přesun dočasný nebo souvisí s problémy se starým názvem domény, není nutné používat trvalé přesměrování. Pokud obdržíte ban nebo filtr, přenesete minulé problémy na novou adresu.

Jaký je rozdíl mezi trvalým a jiným přesměrováním?

Přesměrování 302 a 301 jsou podobná. Pro většinu případů však bude optimálním řešením trvalé přesměrování.

Tyto kódy odezvy HTTP nejsou roboty vnímány stejně, a proto mají různé účinky na výsledky vyhledávání. Přesměrování 301 je známkou toho, že vyhledávač by měl zapomenout na starou adresu a už ji nikdy nenavštívit. A 302 signalizuje pokračování indexování obsahu umístěného na původně požadované stránce.
V případě přesměrování 301 se již nerelevantní publikace již nebude zobrazovat ve výsledcích vyhledávání. S přesměrováním 302 budou v indexu přítomny obě stránky.

Ve skutečnosti je lepší vždy nastavit kód na 301.

  • požadovaná stránka obsahuje odkazy, které musí být nadále indexovány;
  • indexování nové stránky není kritické.
Zkušenosti z praxe: 301 přesměrování versus 302

Status 302 je dočasné opatření, které informuje vyhledávače, že stará stránka prochází technickými úpravami a měla by být ponechána ve výsledcích vyhledávání.

Podívejme se na příklad. Web změnil zónu domény a poté také získal zabezpečený protokol https. Vývojáři však nenastavili trvalé, ale dočasné přesměrování.

Během provozu přesměrování 302 byly v indexu Yandex a Google 3 kopie stejné internetové stránky. Kvůli tomu došlo k výraznému poklesu pozic.

Když byla chyba opravena, roboti sloučili duplikáty a ze svých výsledků vyloučili další stránky. Stránka se opět vrátila do TOP.

Přesměrování 301 vs Canonical

Přes určité nuance si vyhledávače stanovily jasná pravidla pro používání příkazů. Zde je návod, jak jim Google a Yandex rozumí:

  • 301 - „Moje stránka se navždy přesunula na jiné místo, nevrátí se. Odstraňte jej ze svého rejstříku a přeneste váhu do nového dokumentu.“
  • Canonical – „Mám více verzí obsahu stránky. Naskenujte prosím mou prioritní kopii, kterou jsem označil jako kanonickou. Zbývající materiály budou také dostupné uživatelům, ale není nutné je indexovat.“
Kdy je lepší použít přesměrování 301:
  • Toto je výchozí nejlepší metoda;
  • pro chybu 404 a obsah, který již není relevantní, ale stále má
  • externí odkazy a velký provoz;
  • při změně domény v důsledku rebrandingu nebo prodeje zdroje;
  • pro stránku, která se navždy posunula.
Případy použití pro rel="canonical":
  • pokud má článek duplikáty, které návštěvníci potřebují, například popisy
  • stejné produkty, ale různé barvy;
  • když je obtížné provést trvalé přesměrování;
  • pro více domén s podobnými články;
  • na různých adresách stejného obsahu (katalogové řazení).
Kde je nakonfigurováno přesměrování 301?

V závislosti na motoru lze přesměrování provést různými způsoby.

.htaccess nebo httpd.conf pro Apache

Tato metoda je oblíbená díky své jednoduchosti, abyste ji mohli implementovat, musíte ve složce webu vytvořit soubor s názvem .htaccess. Nebo upravit, pokud je již poskytován motorem.

Důležité! Před provedením jakýchkoli změn si vytvořte zálohu souboru, který upravujete (nebo celého webu)

Pro trvalé přesměrování napište na začátek souboru a nahraďte svá data:

  • Přesměrujte celý web na jinou adresu:

Přesměrování / http://new-site.ru/

  • Přesměrování z jedné stránky na druhou:

Přesměrování 301 /stránka-1.html /stránka-2.html

  • Přesměrování z www na bez www:

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

  • Přesměrování z HTTP na HTTPS

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

Upozorňujeme, že při práci se souborem se příkaz vyskytuje na úrovni serveru se systémem Linux nebo Apache s aktivovaným modulem Mod_rewrite.

Přesměrování .htaccess můžete změnit pomocí konfiguračního souboru hpptd.conf. V tomto případě bude možné vytvořit menší zátěž na serveru, ale webmasteři k němu obvykle nemají přístup.

Prostřednictvím pluginů v CMS

Přesměrování na jiný web lze snadno nastavit pomocí speciálního pluginu. Rozšíření Simple 301 Redirects je tedy vhodné pro WordPress. Jedinou nevýhodou přídavného modulu je ruční vytváření seznamu adres pro přeposílání.


Přes podmínky PHP

Toto řešení je vhodné pro ty, kteří dokonale znají strukturu webového projektu a rozumí PHP. Pokud je web vytvořen na CMS, zkuste otevřít soubor index.php v kořenovém adresáři enginu a napsat tam:

if ($_SERVER [ "REQUEST_URI" ] == "/index.php" ) (
header("Umístění: /", TRUE, 301);
výstup();
}

(uveďte starou adresu URL v prvním řádku a novou v druhém)

Alternativně lze přesměrování PHP provést zasláním záhlaví (skript):

ASP přesměrování


Přesměrování ASP.NET

Najděte soubor web.config v kořenovém adresáři svého webu a vložte syntaxi do sekce:

< script runat= “server ”>
private void Page_Load(odesílatel objektu, System.EventArgs e)
{
Odpověď .Status = “301 přesunuto trvale”;
Odpověď .AddHeader („Umístění“, „http: //www.new-url.com“);
}

Přesměrování ColdFusion