Jak nastavit přesměrování na jinou URL v PHP před načtením stránky? PHP přesměrování externích odkazů. Přesměrování se zpožděním a odpočítávacím časovačem. Skrytí doporučujících odkazů

Kdokoli může poslat. Správné přesměrování je ale celé umění. Přesměrování uživatelů na správnou cestu na internetu je ale ještě obtížnější. K tomu se nejlépe hodí přesměrování na php.

Jaký druh přesměrování?

Při programování webu nastávají situace, kdy potřebujete přesměrovat uživatele po odkazu na jinou adresu. Samozřejmě, na první pohled vypadá implementace takového přesměrování trochu „nelegálně“. V praxi je takové přesměrování žádané nejen mezi útočníky, ale také mezi poctivými webmastery:

V jakých případech může být vyžadováno přesměrování:

  • Při výměně enginu webu se v důsledku toho změní architektura celého prostředku. Pak vyvstává problém, jak provést přesměrování;
  • Když je struktura zdroje překreslena, jsou přidány, odstraněny nebo přeneseny celé sekce nebo jeden materiál. Zatímco tento proces probíhá, je dočasně možné přesměrovat uživatele do požadované sekce;
  • Pokud web nedávno změnil název domény, po změně názvu domény se ve výsledcích vyhledávání ještě nějakou dobu objeví starý. V tomto případě bude uživatel vyhledávačem automaticky přesměrován na novou doménu;
  • Během procesu autorizace jsou na velkém webu zpravidla dvě skupiny uživatelů: běžní návštěvníci a správci zdrojů. V tomto případě má smysl implementovat přesměrování pro každého uživatele podle jeho práv a role. Po autorizaci přejde správce webu nebo moderátoři do administrativní části zdroje a návštěvníci do uživatelské části zdroje.
Vlastnosti přesměrování na php

Na rozdíl od jiných jazyků má PHP některé výhody při implementaci přesměrování:

  • PHP je programovací jazyk na straně serveru. K přesměrování tedy nedojde v html kódu stránek zobrazených v prohlížeči, ale ve skriptu hostovaném na serveru;
  • Přesměrování na php lze implementovat několika způsoby. Což značně rozšiřuje jeho aplikaci;
  • Kvůli zpracování dat na serveru je přesměrování realizované pomocí PHP méně náchylné na efekty filtrů vyhledávačů.

Pro přesměrování v PHP se používá funkce header(). Slouží k odeslání hlavičky http. Jeho syntaxe je:

void záhlaví (řetězec $string [, bool $nahradit = true [, int $http_response_code ]])

Argumenty přijaté funkcí:


  • string $string – řádek záhlaví;

Existují dva typy tohoto argumentu. První je pro odeslání kódu stavu připojení. Začíná to "HTTP/". Druhý typ odešle stavový kód (PŘESMĚROVÁNÍ 302) do klientského prohlížeče spolu se záhlavím. Tento argument začíná „Umístění:“


  • bool $replace je volitelný atribut typu bool . Zodpovědný za přepsání předchozí hlavičky. Pokud je nastaveno na hodnotu true , bude nahrazeno předchozí záhlaví nebo záhlaví stejného typu. Pokud je argument nastaven na hodnotu false , záhlaví nebude přepsáno. Ve výchozím nastavení je tato hodnota nastavena na true ;
  • http_response_code – argument vynutí kód odpovědi HTTP. Instalace kódu bude úspěšná za předpokladu, že argument řetězce není prázdný.

Stavový kód HTTP je součástí horního řádku odpovědi serveru. Kód se skládá ze tří čísel, za nimiž následuje vysvětlující text v angličtině. První číslice odpovídá za třídu stavu. Přesměrování odpovídá kódům od 300 do 307. Jejich úplný popis naleznete v příslušné technické dokumentaci.

Při použití funkce header() k přesměrování externích odkazů je velmi důležité místo jejího volání. V kódu by měl být umístěn nad všemi html značkami:


Pomocí přesměrování header().

Chcete-li demonstrovat funkčnost funkce na místním serveru, musíte vytvořit dva soubory. Nazvěme jeden z nich redirect.php a druhý redirect2.php . Do prvního z nich umístíme volání funkce v následujícím formátu:

Do jiného souboru vložíme řádek:

echo "Dobrý den! Jste v souboru redirect2.php";


Některé další praktické příklady použití přesměrování na php:

  • Vynutit stavový kód http – při použití prvního argumentu funkce header() typu „location“ se do hlavičky předá výchozí stavový kód „302“ (dočasně přesunuto). To se může stát problémem při přesouvání zdroje na jiný název domény. Ve vyhledávačích může takové dočasné přesměrování trvat déle. Koneckonců, vyhledávač neustále analyzuje stavový kód. A říká „dočasně přesunuto“. Příklad vynuceného přepsání stavového kódu "302" na "301" (trvale přesunuto):

Přepis je také možný ve dvou fázích. První řádek přepíše stavový kód a druhý přesměruje na novou adresu:

  • Použití přesměrování externích odkazů k přesměrování v závislosti na roli uživatele. Role je určena během autentizační procedury. Hodnota, která se má zpracovat, se zapíše do proměnné $who:

  • Zjednodušený praktický příklad implementace přesměrování externího odkazu – kliknutí na odkaz vede na php stránku. Odtud je uživatel za 5 sekund přesměrován na Rambler. HTML kód:

Stiskněte mě

Kód souboru Redirect3.php:


Tak a jsme tady, učíme se základy přesměrování v PHP. Nyní se můžete bezpečně ujmout úkolu přesměrovat uživatele správným směrem. Hlavní věcí je neudělat chybu ve směru, jinak všechny své uživatele přivedete na stránky někoho jiného...

Domů > Programy > Apache

301 přesměrování - správné přesměrování přes htaccess a hlavičku php

Přesměrování 301 (301 Permanent Redirect) se používá v několika případech: při změně domény, při přesunu stránky webu, ke sloučení názvu webu s a bez www. To je důležité pro přenos hodnocení Page Rank (PR) a udržení návštěvnosti z vyhledávání.

Sám jsem se potýkal s jeho potřebou, když jsem po přesunu svého portálu z com zóny do ru zjistil, že Google, Yandex a další vyhledávače přirozeně „nezapomínají“ na starý web (částečně i proto, že jsem byla nainstalována nesprávná vlastní stránka pro zpracování 404 chyb, která vrátila kód odpovědi 200 OK). Kromě toho Google ponechal PR=0 pro nový web na šest měsíců, ačkoli zůstal PR=4 pro starý.

Téma 301 přesměrování je neustále probíráno na různých SEO fórech a každý vyhledávač má ve svém systému nápovědy speciální sekce. Zatímco jsem to zjišťoval, našel jsem níže uvedené možnosti pro uspořádání přesměrování, z nichž některé jsem sám vyzkoušel.

Přesměrování 301 je nejlepší metodou pro udržení pozice ve vyhledávači, když přesunete stránku nebo web. Kód "301" je interpretován jako "přesunuto trvale".

  • Jednoduché přesměrování (v souboru .htaccess nebo httpd.conf pro Apache): Redirect 301 / http://www.you.com/new.htm
    Kde:
    Přesměrování 301 je instrukce, která říká, že stránka byla přesunuta
    / - znamená, že vše z nejvyšší úrovně webu, včetně všech podadresářů, bude přesměrováno
    http://www.you.com/new.htm - nová stránka nebo web (nezapomeňte uvést poslední „/“, pokud je přesměrování na web).

    Chcete-li přesměrovat pouze stránku se zachováním PR staré stránky:
    Přesměrování 301 /old/old.htm http://www.you.com/new.htm
    Kde:
    /old/old.htm - cesta a název staré stránky

    Podobná syntaxe pro přesměrování webu:
    Trvalé přesměrování / http://www.you.com/

    Příklad přesměrování adresáře:
    Trvalé přesměrování /starý-adresář http://www.domena.com/nový-adresář/

    Například ty, kteří zadali test, přesměrujeme na www.test.com, ostatní na enter.test.com (pořadí položek je důležité):

    Trvalé přesměrování /test http://www.test.com/ Trvalé přesměrování / http://enter.test.com/

    Poznámka: Pro mé účely (změna domény) stačila první možnost jednoduchého přesměrování 301.

  • Pomocí mod_rewrite (zapsaného v souboru .htaccess):

    Klasický problém sloučení názvů stránek s a bez www je vyřešen takto:

    Možnosti +FollowSymLinks RewriteEngine na RewriteCond %(HTTP_HOST) ^vaše stránky\.com RewriteRule ^(.*)$ http://www.yoursite.com/$1 .

    nebo alternativní syntaxe:

    Možnosti +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^doména\.com$ RewriteRule ^(.*)$ http://www.domain.com/$1

    Zápis znamená: přesměrovat klienta a poslat mu stavový kód 301 (R=301) a učinit toto pravidlo trvalým (L).

    Přesměrování staré domény na novou:

    Možnosti +FollowSymLinks RewriteEngine na RewriteRule (.*) http://www.newdomain.com/$1

    Pokud například chcete, aby se místo souboru rewrite.htm načetl soubor rewrite.html, přidejte do .htaccess:

    RewriteEngine na RewriteBase / RewriteRule ^rewrite\.htm$ rewrite.html

    Chcete-li nahradit všechny soubory .htm soubory .html:

    RewriteEngine na RewriteBase / RewriteRule ^(.*)\.htm$ $1.html
  • Přesměrování na PHP: Je lepší zadat HTTP/1.1, protože starší nepodporují sdílený hosting. Pamatujte, že před vyvoláním záhlaví by se nemělo nic tisknout (např. echo nebo tisk). Proto je lepší umístit tento kód na začátek PHP skriptu. Kompletnější verze přesměrování php s uložením přenášené stránky a parametrů volání:
  • Přesměrování na ASP
  • Přesměrování na ASP.NET private void Page_Load(object sender, System.EventArgs e) ( Response.Status = "301 přesunuto trvale"; Response.AddHeader("Location","http://www.new-url.com") ;
  • Přesměrování na ColdFusion
  • Přesměrování pomocí meta refresh

    kde 0 je zpoždění přesměrování v sekundách, newdomain.com je stránka, na kterou budeme přesměrováni. Některé starší prohlížeče nepodporují meta refresh s hodnotou 0 kvůli kompatibilitě, můžete ji nastavit na nenulovou hodnotu, i když to už podle mě není relevantní. Takové přesměrování nebude schopno slepit vaše stránky (s www nebo bez) a přenést PR, protože je vyhledávače ignorují. Vrátí kód 200 OK, což je normální stránka. Tato technika je oblíbená u spammerů, takže by se měla používat pouze pro stránky, které nebudou indexovány.

  • Přesměrování pomocí JavaScriptu

    Možnosti přesměrování JavaScriptu jsou často implementovány pomocí funkce setTimeout("funkce", zpoždění).

    Chcete-li například automaticky kliknout na tlačítko "Odeslat" formuláře "vyhledávací formulář" 0,1 sekundy po načtení kódu:

    setTimeout("document.forms["searchform"].Submit.click()", 100);

    Tlačítku "Odeslat" můžete přiřadit libovolnou akci, například v tomto okně otevřít novou URL. Mimochodem, taková přesměrování jsou běžnější při organizaci Dorways - prohlížeč uživatele bude přesměrován na jinou stránku a vyhledávací robot, který „nerozumí“ JavaScriptu, zaindexuje tuto stránku, která je pro uživatele nepřístupná. Vývojáři společnosti Doorway na ni zveřejňují text plný „nezbytných“ klíčových slov.

    Chcete-li jednoduše přesměrovat na jinou stránku, můžete vložit za jednu z možností kódu JavaScript:

    • location="http://www.newdomain.com";
    • document.location.href="http://www.newdomain.com";
    • window.location.reload("http://www.newdomain.com");
    • document.location.replace("http://www.newdomain.com");
    V druhém případě se již nebude možné vrátit na stránku, která provedla přesměrování, protože její adresa je vymazána z historie, což je často nutné. Pokud potřebujete časovou prodlevu, můžete se zaregistrovat location="http://www.newdomain.com"; jako funkci a vložte ji do setTimeout("function()", delay_in_ms); Přesměrování na JavaScrupt není přesměrování 301 a nepřenese PR stránky a nebude moci zajistit její sloučení.
  • Dále si všimněme některých funkcí přesměrování:
    • Metody přesměrování .htaccess fungují pouze na linuxových serverech, které mají Apache s povoleným modulem Mod-Rewrite.
    • Použití .htaccess vytváří další zátěž na serveru Apache, je efektivnější zapisovat stejné příkazy do jeho konfiguračního souboru hpptd.conf, ale webmaster k němu zpravidla nemá přístup.
    • Přesměrování 301 umožňuje šetřit provoz a přenášet PR stránky do vyhledávačů (pro Google určitě).
    • Proces lepení a přenosu PR trvá dlouho - až několik měsíců a závisí také na vyhledávači, proto nemažte starou stránku nebo web, dokud nedojde ke konečnému přenosu.
    • Některé vyhledávače vyžadují další nastavení pro slučování webů, například pro Yandex musíte navíc zadat robots.txt

    Závěr. Bezpečným způsobem, jak přesměrovat staré stránky na nové nebo starý web na novou adresu, při zachování pozic ve vyhledávačích, je použití přesměrování 301, které také umožní přenést starý Page Rank stránky na nový místo.

    Jak často potřebujete přesměrovat uživatele na jinou stránku? Jsem si jistý, že to není nic neobvyklého. K provedení tohoto úkolu se používá několik metod.

    Přesměrování na javascript

    Na stránce, ze které chcete uživatele přesměrovat, nastavte následující kód:

    window.location.href = "http://www.site"

    Místo http://www.site zadejte stránku, na kterou má být uživatel přesměrován. Tato metoda nefunguje, pokud v prohlížeči není povolen javascript. Jak však ukazuje praxe, téměř všichni uživatelé webu mají povolený javascript. Ale zároveň je deaktivován pro vyhledávací roboty.

    Přesměrování pomocí metaznačky refresh

    Použijme html tagy. Značka udávající čas obnovení stránky vypadá takto:

    Značka v tomto tvaru vynutí obnovení stránky v prohlížeči po 5 sekundách a nahradí adresu stránky novou adresou uvedenou ve značce.
    S 5 sekundami se ale nespokojíme, takže finální verze tagu bude následující:

    < meta http-equiv = "refresh" content = "0;url=http://www.сайт" />

    Nevýhodou přesměrování pomocí značek a javascriptu je, že pokud dojde k přesunu webu, změně domény nebo přesunu souborů, zůstává článek pro uživatele stejný, ale ne pro vyhledávače. Při přesouvání webu proto tyto metody absolutně nemůžete použít, protože hlavní web vypadne z výsledků vyhledávání kvůli své prázdnotě a nový web se ve výsledcích nezobrazí kvůli „plagiátorství“. Ano, ano, vyhledávače web vyhodnotí jako plagiát. A tento web ukradl obsah z vašeho předchozího webu. Plagiátoři jsou ve výsledcích vyhledávání výrazně nižší. Nedělejte chyby.

    Přesměrování nástroje PHP

    Všechno je zde jednoduché. Musíte odeslat příslušnou hlavičku http

    Smutná zkušenost nám říká, že stav serveru by neměl být opomíjen.
    Jeden z mých článků se často nacházel ve výsledcích vyhledávačů. Ale rozhodl jsem se to přesunout na jinou adresu. V důsledku toho byla adresa A změněna na adresu B. Na adresu A jsem však žádné záhlaví pro návštěvníky neposílal. Po nějaké době našli vyhledávací roboti také stránku B. Zaindexovali ji, viděli, že se shoduje se stránkou A, a ignorovali ji. Pak jsme šli na stránku A, viděli jsme, že zmizela, a smazali jsme ji z naší vlastní databáze.
    V důsledku toho můj článek vypadl z výsledků vyhledávačů.

    Proto při přenosu materiálů nezapomeňte uvést potřebné http hlavičky.

    Přesměrování pomocí serveru apache (.htaccess)

    Snad nejpohodlnější způsob přeposílání. Příklad přesměrování na novou doménu:

    Přesměrujeme tedy požadavek ze souboru old.htm, který se nachází v kořenovém adresáři webu, do souboru rewrite.html, který se nachází v adresáři newcategory.

    Jak jste si již všimli (a ti, kteří neměli čas, mají ještě poslední šanci), RewriteRule podporuje regulární výrazy, což vám umožňuje dělat s přesměrováním, co chcete.
    Udělal jsem například soubor .htm s obrázkem (RewriteRule ^(.*).htm$ $1.jpg), tzn. z adresy dog.htm mě prohlížeč přesměroval na obrázek pes.jpg. Nechci popisovat všechny možnosti modulu mod_rewrite, s jehož pomocí jsme nyní pracovali. Je o tom napsáno mnoho návodů, ale pokud chcete, můžete si o tom vyhledat další informace sami. (Například v angličtině.)

    Výhodou této metody je, že je bezbolestná. To znamená, že přenos materiálů a následné přesměrování ze staré adresy na novou nijak neovlivní pozici webu ve vyhledávačích. Systém funguje stejně jako přesměrování php, kromě toho, že nevyžaduje instalaci php. Ale je tu také mínus: přesměrování pomocí mod-rewrite zatěžuje server o něco více než stejné přesměrování přes php. A modul mod-rewrite není vždy nainstalován na Apache. Ačkoli jej nyní většina hostitelů instaluje, stále existují ojedinělé klinické případy, kdy tento modul nainstalován není.

    Vyberte si metodu, která vám nejlépe vyhovuje, a nainstalujte ji na svůj web!

    (PHP 4, PHP 5, PHP 7)

    hlavička — Odešle nezpracovanou hlavičku HTTP

    Popis

    hlavička (řetězec $header [, bool $nahradit = TRUE [, int $http_response_code ]]) : void

    header() se používá k odeslání nezpracované hlavičky HTTP. Další informace o HTTP hlavičkách naleznete ve » specifikaci HTTP/1.1.

    Pamatujte, že header() musí být volána před odesláním jakéhokoli skutečného výstupu, buď pomocí běžných HTML tagů, prázdných řádků v souboru nebo z PHP. Velmi častou chybou je čtení kódu s funkcemi include , nebo require , nebo jinou funkcí pro přístup k souboru a před voláním header() jsou na výstupu mezery nebo prázdné řádky.


    Stejný problém existuje při použití jednoho souboru PHP/HTML.

    Parametry

    Řetězec záhlaví. Existují dvě speciální volání záhlaví. První je záhlaví, které začíná řetězcem " HTTP/ " (velikost není důležitá), která se použije k určení stavového kódu HTTP, který se má odeslat. Pokud jste například nakonfigurovali Apache tak, aby ke zpracování požadavků na chybějící soubory používal skript PHP (pomocí ErrorDocument

    direktiva), můžete se ujistit, že váš skript generuje správný stavový kód. Druhým speciálním případem je záhlaví "Location:". Nejenže odešle tuto hlavičku zpět do prohlížeče, ale také vrátí a PŘESMĚROVAT 201 (302) stavový kód do prohlížeče, pokud není nebo a 3xx

    stavový kód již byl nastaven.

    Nahradit

    Volitelný parametr nahradit určuje, zda má záhlaví nahradit předchozí podobné záhlaví, nebo přidat druhé záhlaví stejného typu. Ve výchozím nastavení nahradí, ale pokud předáte jako druhý argument hodnotu FALSE, můžete vynutit více hlaviček stejného typu. Například:

    Http_response_code

    Vynutí kód odpovědi HTTP na zadanou hodnotu. Všimněte si, že tento parametr má účinek pouze v případě, že záhlaví není prázdné.

    Návratové hodnoty

    Žádná hodnota není vrácena. Seznam změn
    5.1.2 Popis verze
    Tato funkce nyní zabraňuje odeslání více než jedné hlavičky najednou jako ochrana proti útokům vkládání hlavičky.

    Příklady

    Příklad #1 Dialogové okno stahování



    
    Nahoru