Každý môže poslať. Ale správne presmerovanie je celé umenie. Ale presmerovanie používateľov na požadovanú cestu na internete je ešte zložitejšie. Na tento účel je najvhodnejšie presmerovanie php.
Čo je toto presmerovanie?
Vo webovom programovaní existujú situácie, keď potrebujete presmerovať používateľa po odkaze na inú adresu. Samozrejme, na prvý pohľad vyzerá implementácia takéhoto presmerovania trochu „nelegálne“. V praxi je takéto presmerovanie žiadané nielen medzi kyberzločincami, ale aj medzi čestnými webmastermi:
V akých prípadoch sa môže vyžadovať presmerovanie:
- Po výmene nástroja lokality sa v dôsledku toho zmení architektúra celého zdroja. Potom nastáva problém, ako urobiť presmerovanie;
- Pri prekresľovaní štruktúry zdroja - dochádza k pridávaniu, odoberaniu alebo presunu celých sekcií alebo jedného materiálu. Počas tohto procesu môžete dočasne zariadiť, aby bol používateľ presmerovaný na požadovanú sekciu;
- Ak stránka nedávno zmenila názov domény - po zmene názvu domény sa vo výsledkoch vyhľadávania nejaký čas objaví starý. V tomto prípade bude používateľ automaticky presmerovaný na novú doménu vyhľadávacím nástrojom;
- Počas procesu autorizácie - na veľkej stránke sú spravidla dve skupiny používateľov: pravidelní návštevníci a správcovia zdrojov. V tomto prípade má zmysel implementovať presmerovanie pre každého používateľa podľa jeho práv a roly. Po autorizácii administrátor alebo moderátori stránky prejdú do administratívnej časti zdroja a návštevníci do užívateľskej časti zdroja.
Funkcie presmerovania na php
Na rozdiel od iných jazykov má php niekoľko výhod pri presmerovaní:
- PHP je programovací jazyk na strane servera. Preto sa presmerovanie neuskutoční v html kóde stránok zobrazených v prehliadači, ale v skripte hosťovanom na serveri;
- Presmerovanie php môže byť implementované niekoľkými spôsobmi. To značne rozširuje jeho použitie;
- Kvôli spracovaniu údajov na serveri je presmerovanie implementované pomocou php menej náchylné na filtre vyhľadávacích nástrojov.
Pre presmerovanie v php sa používa funkcia header (). Používa sa na odoslanie hlavičky http. Jeho syntax je:
neplatná hlavička (reťazec $ reťazec [, bool $ nahradiť = true [, int $ http_response_code]])
Argumenty akceptované funkciou sú:
- reťazec $ reťazec- riadok nadpisu;
Existujú dva typy tohto argumentu. Prvým je odoslanie kódu stavu pripojenia. Začína to "HTTP /". Druhý typ, spolu s hlavičkou, posiela stavový kód (REDIRECT 302) do klientskeho prehliadača. Tento argument začína výrazom „Umiestnenie:“
- bool $ nahradiť je voliteľný atribút bool. Zodpovedá za prepísanie predchádzajúceho nadpisu. Ak je pravda, predchádzajúci nadpis alebo nadpisy rovnakého typu budú nahradené. Ak je argument nastavený na hodnotu false, hlavička sa neprepíše. Štandardne je nastavená na hodnotu true;
- http_response_code – Argument si vynúti kód odpovede HTTP. Inštalácia kódu bude úspešná za predpokladu, že argument reťazca nie je prázdny.
Stavový kód HTTP je súčasťou horného riadku odpovede servera. Kód sa skladá z troch čísel, za ktorými nasleduje vysvetľujúci nápis v angličtine. Prvá číslica zodpovedá za triedu štátu. Kódy presmerovania zodpovedajú kódom od 300 do 307. Ich úplný popis nájdete v príslušnej technickej dokumentácii.
Pri použití funkcie hlavičky () na presmerovanie externých odkazov je veľmi dôležité miesto hovoru. V kóde by to malo byť nad všetkými html značkami:
Použitie presmerovania hlavičky ().
Ak chcete demonštrovať, ako funkcia funguje na lokálnom serveri, musíte vytvoriť dva súbory. Jednu z nich nazvime redirect.php a druhú redirect2.php. Do prvého umiestnime volanie funkcie v nasledujúcom formáte:
Vložte riadok do iného súboru:
echo "Dobrý deň! Ste v súbore redirect2.php";
Niekoľko praktických príkladov použitia presmerovaní php:
- Vynútenie kódu stavu http - pri použití prvého argumentu funkcie hlavičky () typu " umiestnenie"V predvolenom nastavení je stavový kód" 302 » ( dočasne presunutý). To sa môže stať problémom pri prenose zdroja na iný názov domény. Vo vyhľadávačoch sa takéto dočasné presmerovanie môže oddialiť. Koniec koncov, vyhľadávač neustále analyzuje stavový kód. A hovorí sa „ dočasne presunutý". Príklad núteného prepisovania stavového kódu " 302 "zapnuté" 301 » ( trvalo presťahovaný):
Prepis je tiež možný v dvoch fázach. Prvý riadok prepíše stavový kód a druhý presmeruje na novú adresu:
- Použitie presmerovania externých odkazov na presmerovanie v závislosti od roly používateľa. Rola je určená počas autentifikačnej procedúry. Hodnota, ktorá sa má spracovať, sa zapíše do premennej $ who:
- Zjednodušený praktický príklad implementácie presmerovania externého odkazu – kliknutie na odkaz vedie na php stránku. Odtiaľ je používateľ po 5 sekundách prenesený do Rambler. Html kód:
Tlačiť ma
Kód súboru Redirect3.php:
Tu sme sa naučili základy presmerovania na php. Teraz môžete bezpečne presmerovať používateľov správnym smerom. Hlavnou vecou nie je mýliť sa v smere, inak privediete všetkých svojich používateľov na stránky niekoho iného ...
Ako často potrebujete presmerovať používateľa na inú stránku? Som si istý, že to nie je zriedkavé. Na splnenie tejto úlohy sa používa niekoľko metód.
Presmerovanie na javascript
Na stránke, z ktorej chcete presmerovať používateľa, nastavte nasledujúci kód:
Nahraďte http: //www.stránku stránkou, na ktorú má byť používateľ presmerovaný. Metóda nefunguje, ak v prehliadači nie je povolený javascript. Ako však ukazuje prax, javascript je povolený pre takmer všetkých používateľov stránok. Zároveň je však zakázaný pre vyhľadávacie roboty.
Presmerovanie pomocou metaznačky refresh
Použime html tagy. Značka označujúca čas obnovenia stránky vyzerá takto:
Značka v tomto tvare vynúti obnovenie stránky v prehliadači po 5 sekundách, pričom nahradí adresu stránky novou adresou špecifikovanou v značke.
Ale nie sme spokojní s 5 sekundami, takže konečná verzia značky bude nasledovná:
< meta http-equiv = "refresh" content = "0;url=http://www.сайт" /> |
Nevýhodou presmerovania pomocou značiek a javascriptu je, že v prípade presunu stránky, zmeny domény alebo presunu súboru zostáva článok pre používateľa rovnaký, ale pre vyhľadávače nie. Preto je pri presúvaní stránky kategoricky nemožné použiť tieto metódy, keďže hlavná stránka vypadne z výsledkov vyhľadávania kvôli jej prázdnote a nová stránka nebude zahrnutá do výsledkov z dôvodu „plagiátorstva“. Áno, áno, vyhľadávače budú stránku hodnotiť ako plagiát. A táto stránka ukradla obsah z vašej predchádzajúcej stránky. Vo výsledkoch vyhľadávania výrazne klesá počet plagiátorov. Neurobiť chybu.
Presmerovanie PHP
Všetko je tu jednoduché. Musíte odoslať príslušnú hlavičku http
Smutná skúsenosť hovorí, že stav servera nemôžete zanedbávať.
Jeden z mojich článkov sa často nachádzal vo výsledkoch vyhľadávačov. Ale vzal som si to do hlavy, aby som to preniesol na inú adresu. V dôsledku toho sa adresa A zmenila na adresu B. Zároveň som na adresu A neposielal žiadne hlavičky pre návštevníkov. Po nejakom čase našli roboti na vyhľadávanie aj stránku B. Indexovali ju, videli, že je rovnaká ako stránka A, a ignorovali ju. Potom prešli na stránku A, videli, že zmizla, a odstránili ju zo svojej databázy.
V dôsledku toho môj článok vypadol z výsledkov vyhľadávača.
Preto pri prenose materiálov nezabudnite uviesť požadované hlavičky http.
Presmerovanie servera Apache (.htaccess)
Možno najpohodlnejší spôsob preposielania. Príklad presmerovania na novú doménu:
Požiadavku teda presmerujeme zo súboru old.htm umiestneného v koreňovom adresári stránky do súboru rewrite.html umiestneného v adresári newcategory.
Ako ste si už všimli (a kto nemal čas, ten má ešte poslednú šancu), RewriteRule podporuje regulárne výrazy, čo vám umožňuje s presmerovaním vytvárať, čo chcete.
Napríklad zo súboru .htm som urobil obrázok (RewriteRule ^ (. *). Htm $ $ 1.jpg), t.j. z adresy dog.htm mi prehliadač vyhodil na obrázok pes.jpg. Nechcem popisovať všetky funkcie modulu mod_rewrite, s pomocou ktorého sme teraz pracovali. Je o tom napísaných veľa návodov, no ak chcete, ďalšie informácie si o tom môžete vyhľadať sami. (Napríklad však v angličtine.)
Výhodou tejto metódy je jej bezbolestnosť. To znamená, že presun materiálov a následné presmerovanie zo starej adresy na novú nijako neovplyvní pozíciu stránky vo vyhľadávačoch. Systém funguje rovnako ako presmerovania na php, okrem toho, že nevyžaduje inštaláciu php. Existuje však aj nevýhoda: presmerovanie cez mod-rewrite zaťažuje server o niečo viac ako rovnaké presmerovanie cez php. A modul mod-rewrite nie je vždy nainštalovaný na Apache. Hoci ho teraz väčšina hostiteľov inštaluje, stále existujú ojedinelé klinické prípady, keď tento modul nie je nainštalovaný.
Vyberte si spôsob, ktorý vám najviac vyhovuje, a nainštalujte ho na stránku!
Rýchla navigácia na tejto stránke:
Ak sa rozhodnete napísať skript a presmerovať PHP, výhody tohto kroku sú zrejmé: PHP je serverovo orientovaný skriptovací jazyk; presmerovanie sa vykoná prostredníctvom skriptu na serveri, nie v prehliadači návštevníkov. Niektoré presmerovania je možné vykonať na strane klienta – prostredníctvom presmerovania js (t. j. prostredníctvom presmerovania JavaScriptu).
Ide o flexibilnejší a všestrannejší prístup a na rozdiel od iných metód môžete v PHP vykonávať niekoľko typov presmerovaní. Tu sú najbežnejšie typy presmerovaní, ktoré je možné vykonať v PHP: a) 301 PHP presmerovaní (stav trvalého presmerovania), b) 302 PHP presmerovaní (stav dočasného presmerovania), c) Aktualizácia.
Tento článok bude užitočný predovšetkým pre začínajúcich webmasterov, ktorí hľadajú spôsoby, ako implementovať presmerovanie URL, keď to nie je možné pomocou iných bežných riešení, ako je htaccess.
Hlavička funkcie PHP
Povedzme napríklad, že chcete presmerovať na túto adresu URL http://www.somewebsite.com/target.php. Na pôvodnej stránke PHP stačí zavolať tento skript presmerovania:
Vyskúšajte tento jednoduchý experiment aj na vašom localhost:
1) Otvorte textový editor a zadajte tento kód:
Uložte ho ako targetpage.php.
2) Otvorte ďalší prázdny textový súbor a zadajte tento kód:
Uložte ho ako originatingpage.php.
3) Teraz spustite webový prehliadač. Do panela s adresou svojho prehliadača zadajte: http: //localhost/originatingpage.php
4) Všimnete si, že po stlačení tlačidla enter sa táto adresa URL: http: //localhost/originatingpage.php presmeruje na http: //localhost/targetpage.php a na targetpage.php a uvidíte slová „Ahoj toto je kódex -x ".
Jednu z najčastejších chýb možno nájsť v návrhu html kódu presmerovania:
Skúste tento experiment:
Prejdite na skript originatingpage.php a pridajte ľubovoľnú značku HTML:
hlavička („Umiestnenie: http: //localhost/targetpage.php“);
Predpokladajme, že máte takýto kód:
2) Uložte súbor.
3) Spustite skript originating.php znova v. Ak nevidíte žiadne chyby, všimnete si, že stále iba presmeruje na targetpage.php
4) Teraz skúste zmeniť cieľovú adresu URL tak, aby smerovala na skutočnú stránku, napríklad:
5) Nahrajte originatingpage.php na vzdialený hosting do koreňového adresára vašej stránky.
6) Spustite skript v prehliadači zavolaním adresy originatingpage.php, napríklad: http://www.php-developer.org/originatingpage.php
7) Všimnete si, že tentoraz narazíte na chybu:
Upozornenie: Nie je možné upraviť informácie hlavičky – hlavičky už odoslal (výstup začal na /home/phpdevel/public_html/originatingpage.php:6) v /home/phpdevel/public_html/originatingpage.php na riadku 7
Čo sa tu deje? Dôvodom problému je, že ste už vyrenderovali kód HTML pred hlavičkou funkcie.
Aké je použitie presmerovania?
Pomocou presmerovania môžete používateľov presmerovať z jednej webovej stránky na druhú. Ak sú napríklad na vašej stránke texty odkazov na články v nevzhľadnej forme (súbor čísel alebo znakov), je možné ich zmeniť prepisom a presmerovaním na tieto odkazy. Možnosti presmerovania sú takmer neobmedzené! Výhody tejto metódy na zvýšenie indexovania stránok, zlepšenie výkonu stránok a prilákanie používateľov sú zrejmé.
Povedzme, že chcete používateľov, ktorí navštívia stránku https://example.com/initial.php zobrazila sa stránka https://example.com/final.php. To možno vykonať pomocou niekoľkých metód PHP, JavaScript a HTML. V tomto článku vás prevedieme každou z metód, ktoré môžete použiť na presmerovanie PHP na inú stránku.
Tu sú niektoré z premenných, ktoré budeme používať:
Použitie funkcie hlavičky PHP () na presmerovanie adresy URL
Ak chcete pridať presmerovanie z initial.php na final.php, môžete na webovú stránku initial.php vložiť nasledujúci kód. Do prehliadača odošle novú hlavičku umiestnenia:
Tu používame funkciu hlavičky PHP () na vytvorenie presmerovania. Tento kód musíte vložiť pred akýkoľvek HTML alebo text. V opačnom prípade sa zobrazí chybové hlásenie, že hlavička už bola odoslaná. Môžete tiež použiť ukladanie do vyrovnávacej pamäte na zabránenie tejto chybe odosielania hlavičky. Nasledujúci príklad ukazuje túto metódu presmerovania PHP v akcii:
Ak chcete vykonať presmerovanie pomocou funkcie header (), funkcia ob_start () musí byť prvá v skripte PHP. Predídete tak chybám hlavičky.
Ako dodatočné opatrenie môžete pridať kocku () alebo exit () hneď po presmerovaní hlavičky, aby ste zabránili spusteniu zvyšku kódu webovej stránky. V niektorých prípadoch vyhľadávacie roboty alebo prehliadače nemusia venovať pozornosť označeniu v hlavičke Location. Čo je plné potenciálnych hrozieb pre bezpečnosť stránky:
Na objasnenie situácie: zomrieť () alebo ukončiť () nemá nič spoločné s presmerovaniami. Používajú sa na zabránenie spusteniu zvyšku kódu na webovej stránke.
Keď používate PHP presmerovania na stránku, odporúča sa, aby ste pri zadávaní hodnoty hlavičky Location používali absolútne adresy URL. Ale budú fungovať aj relatívne adresy URL. Túto funkciu môžete použiť aj na presmerovanie používateľov na externé lokality alebo webové stránky.
Výstup kódu presmerovania JavaScript pomocou funkcie PHP echo ().
Toto nie je čisté riešenie PHP. Je však aj účinný. Môžete použiť funkciu PHP echo () na výstup kódu JavaScript, ktorý sa postará o presmerovanie.
Ak použijete toto riešenie, nemusíte používať vyrovnávaciu pamäť výstupu. To tiež zabraňuje chybám súvisiacim s odosielaním hlavičiek.
Nižšie je uvedených niekoľko príkladov, ktoré používajú rôzne metódy JavaScriptu na presmerovanie z aktuálnej stránky na inú:
self.location="https://example.com/final.php";"; echo""; echo""; echo""; ?>
Jedinou nevýhodou tohto spôsobu presmerovania na inú stránku PHP je, že JavaScript beží na strane klienta. A vaši návštevníci môžu mať zakázaný JavaScript.
Používanie metaznačiek HTML na presmerovania
Na vykonanie presmerovania môžete použiť aj základné HTML. Možno to znie neprofesionálne, ale funguje to. A nemusíte sa obávať, že v prehliadači je vypnutý JavaScript alebo že sa predtým odoslala chyba hlavičiek:
Môžete tiež použiť posledný riadok z predchádzajúceho príkladu na automatické obnovenie stránky každých " n"Sekundy. Napríklad nasledujúci kód automaticky obnoví stránku každých 8 sekúnd:
Záver
V tomto článku som sa zaoberal tromi rôznymi metódami presmerovania indexu php a ich výhodami a nevýhodami. Presný spôsob použitia závisí od cieľov projektu.
Preklad článku " Ako môžem urobiť presmerovanie na inú adresu URL pred načítaním stránky v PHP»Priateľský projektový tím.
Dobrý zlý
Naposledy upravené 25. februára 2017 používateľom Vincy.
PHP mechanizmus presmerovania sa používa na navigáciu používateľa z jednej stránky na druhú bez klikania na hypertextové odkazy. Bude to užitočné za okolností, keď by sa presmerovanie malo vykonať na pozadí. Napríklad, keď používateľ pristupuje k platobnej bráne, presmerovanie by malo automaticky prebehnúť, aby upozornilo URL pomocou PHP skriptu.
PHP poskytuje preddefinovanú funkciu s názvom hlavička () na presmerovanie URL. Pomocou tejto funkcie hlavičky () musíme odoslať hlavičku umiestnenia zadaním adresy URL, na ktorú má byť stránka presmerovaná.
Na rozdiel od toho, kde existuje niekoľko spôsobov, ako zvládnuť prácu s presmerovaním adresy URL na základe prehliadača, PHP sa vyhýba takémuto zmätku a funkcia hlavičky () vytvorí rovnaký efekt vo všetkých prehliadačoch. Len preto sme v článku o presmerovaní JavaScript dospeli k záveru, že presmerovanie na strane servera je vhodnejšie.
Syntax presmerovania PHP
hlavička („Umiestnenie: cieľová adresa URL");Vo vyššie uvedenej syntaxi PHP redirect musíme nahradiť platnou URL, na ktorú sa chceme presunúť. Pre túto hlavičku umiestnenia môžeme zadať absolútnu URL alebo relatívnu URL. Ak zadáme relatívnu URL, vyhľadá stránku v našej doméne, kde existujeme.
Poznámka: Pred zadaním adresy URL stránky pre hlavičku umiestnenia by sme sa mali uistiť, že stránka existuje.
Pozor pred presmerovaním
Pred vykonaním PHP presmerovania by sme sa mali uistiť, že pred riadkom, kde voláme funkciu header (), sa do prehliadača neodošle žiadny výstup. Napríklad,
Echo "Presmerovanie PHP"; hlavička ("Umiestnenie: lokalita");
Tento skript zobrazí prehliadaču nasledujúce varovné upozornenie.
Upozornenie: Nie je možné upraviť informácie hlavičky - hlavičky už odoslal (...
Neplatí to len pre funkciu hlavičky, ale pre všetky funkcie PHP ako set_cookie (), session_start () atď., čokoľvek môže hlavičku upraviť. Z tohto dôvodu by sme mali odstrániť všetok obsah, ktorý prestane odosielať hlavičku polohy do prehliadača.
Možné spôsoby odosielania výstupu
- obsah HTML, ako je text alebo značky.
- Zbytočné medzery pred oddeľovačmi PHP.
- Chybové alebo varovné upozornenia PHP, ktoré sa vyskytujú pred volaním presmerovania.
- PHP, like, echo (), print ().
Bezpečnostné opatrenia z výstupu odosielaného pred presmerovaním PHP
- Keďže obsah HTML by sa mal odoslať pred presmerovaním, môžeme oddeliť logiku PHP od obsahu HTML.
- Za to, že sme v bezpečí, môžeme dať východ príkaz po príkaze presmerovania súboru PHP. Napríklad hlavička ("Umiestnenie: lokalita"); východ;
- Môžeme povoliť ukladanie výstupu PHP do vyrovnávacej pamäte, aby sa zastavilo odosielanie výstupu do prehliadača a namiesto toho uložené do vyrovnávacej pamäte.
Hodnota avatarov v psychológii
Hodnota avatarov v psychológii
Ako zdôrazniť písmeno v MS Word
Čo to znamená, ak je avatar osoby
Ako si vytvoriť svoj vlastný Twitter moment