Cum să redirecționezi către o altă pagină în PHP. Cum să setați o redirecționare către o altă adresă URL în PHP înainte ca pagina să se încarce

Cât de des trebuie să redirecționați utilizatorul către o altă pagină? Sunt sigur că nu este neobișnuit. Pentru a îndeplini această sarcină sunt folosite mai multe metode.

Redirecționare către javascript

Pe pagina de la care doriți să redirecționați utilizatorul, setați următorul cod:

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

În loc de http://www.site, specificați pagina către care ar trebui să fie redirecționat utilizatorul. Metoda nu funcționează dacă javascript nu este activat în browser. Dar, după cum arată practica, aproape toți utilizatorii site-ului au javascript activat. Dar, în același timp, este dezactivat pentru roboții de căutare.

Redirecționare folosind metaeticheta de reîmprospătare

Să profităm etichete html. Eticheta care indică timpul de reîmprospătare a paginii arată astfel:

Eticheta din acest formular va forța pagina să fie reîmprospătată în browser după 5 secunde, înlocuind adresa paginii cu cea nouă specificată în etichetă.
Dar nu suntem mulțumiți de 5 secunde, așa că versiunea finală a etichetei va fi următoarea:

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

Dezavantajul redirecționării cu tag-uri și javascript este că dacă site-ul este mutat, domeniul este schimbat, sau fișiere sunt mutate, articolul rămâne același pentru utilizator, dar nu și pentru motoarele de căutare. Prin urmare, atunci când mutați un site, nu puteți utiliza aceste metode, deoarece site-ul principal va cădea din rezultatele căutării din cauza vidului său, iar noul site nu va apărea în rezultate din cauza „plagiatului”. Da, da, motoarele de căutare vor evalua site-ul ca fiind plagiat. Și acest site a furat conținut de pe site-ul tău anterior. Plagiatorii sunt semnificativ mai mici în rezultatele căutării. Nu face greșeli.

Redirecționarea instrumentului PHP

Totul este simplu aici. Trebuie să trimiteți antetul http corespunzător

Experiența tristă ne spune că starea serverului nu trebuie neglijată.
Unul dintre articolele mele a fost adesea găsit în rezultatele motoarelor de căutare. Dar am decis să o mut la altă adresă. Ca urmare, adresa A a fost schimbată cu adresa B. Cu toate acestea, nu am trimis niciun antet pentru vizitatori la adresa A. După ceva timp, roboții de căutare au găsit pagina B. Au indexat-o, au văzut că coincide cu pagina A și au ignorat-o. Apoi am mers la pagina A, am văzut că a dispărut și l-am șters din propria noastră bază de date.
Drept urmare, articolul meu a ieșit din rezultatele motorului de căutare.

Prin urmare, nu uitați să specificați anteturile http necesare atunci când transferați materiale.

Redirecționarea prin mijloace server apache(.htaccess)

Poate cel mai mult mod convenabil redirecționări. Un exemplu de redirecționare către un domeniu nou:

Astfel, redirecționăm cererea din fișierul old.htm, aflat în directorul rădăcină al site-ului, către fișierul rewrite.html, aflat în directorul newcategory.

După cum ați observat deja (și cei care nu au avut timp au încă o ultimă șansă), RewriteRule acceptă expresii obisnuite, care vă permite să faceți tot ce doriți cu redirecționare.
De exemplu, am făcut un fișier .htm cu o imagine (RewriteRule ^(htm$ $1.jpg), adică. de la adresa dog.htm browserul m-a redirectionat catre imaginea dog.jpg. Nu vreau să descriu toate capacitățile modulului mod_rewrite, cu ajutorul căruia lucram acum. S-au scris multe tutoriale despre asta, dar dacă doriți, puteți să le căutați singur Informații suplimentare despre. (De exemplu, pe , cu toate acestea, pe Limba engleză.)

Avantajul acestei metode este lipsa durerii. Adică, transferul de materiale și redirecționarea ulterioară de la vechea adresă la cea nouă nu va afecta în niciun fel poziția site-ului în motoarele de căutare. Sistemul funcționează la fel ca redirecționările php, cu excepția faptului că nu necesită instalarea php. Dar există și un minus: redirecționarea prin mod-rewrite încarcă serverul puțin mai mult decât aceeași redirecționare prin php. Iar modulul mod-rewrite nu este întotdeauna instalat pe Apache. Deși majoritatea hosterii îl instalează acum, există încă cazuri clinice izolate în care acest modul nu este instalat.

Alege metoda care ti se potriveste cel mai bine si instaleaza-o pe site-ul tau!

Oricine poate trimite. Dar redirecționarea corectă este o întreagă artă. Dar redirecționarea utilizatorilor către calea corectă pe Internet este și mai dificilă. O redirecționare către php este cea mai potrivită pentru asta.

Ce fel de redirecționare?

În programarea web, apar situații când trebuie să redirecționați un utilizator urmând un link către o altă adresă. Desigur, la prima vedere, implementarea unei astfel de redirecționări pare puțin „ilegală”. În practică, o astfel de redirecționare este solicitată nu numai în rândul atacatorilor, ci și în rândul webmasterilor onești:

În ce cazuri poate fi necesară o redirecționare:

  • Când motorul site-ului este înlocuit, arhitectura întregii resurse se modifică ca urmare. Atunci apare problema cum se face o redirecționare;
  • Atunci când structura unei resurse este redesenată, se adaugă, se șterg sau se transferă secțiuni întregi sau un material. În timp ce acest proces are loc, este temporar posibil să redirecționați utilizatorul către secțiunea dorită;
  • Dacă site-ul și-a schimbat recent Numele domeniului– după schimbarea numelui de domeniu, cel vechi va apărea în continuare în rezultatele cautarii. În acest caz, utilizatorul va fi redirecționat către noul domeniu motor de căutare automat;
  • În timpul procesului de autorizare, de regulă, pe un site web mare există două grupuri de utilizatori: vizitatori obișnuiți și administratori de resurse. În acest caz, are sens să implementezi o redirecționare pentru fiecare utilizator în funcție de drepturile și rolul său. După autorizare, administratorul sau moderatorii site-ului merg la partea administrativă a resursei, iar vizitatorii merg la partea de utilizator a resursei.
Caracteristicile redirecționării către php

Spre deosebire de altele limbi php are câteva avantaje în implementarea unei redirecționări:

  • PHP este un limbaj de programare pe partea de server. Prin urmare, redirecționarea nu se va produce în codul html al paginilor afișate în browser, ci în scriptul aflat pe server;
  • Redirecționarea către php poate fi implementată în mai multe moduri. Ceea ce își extinde foarte mult aplicația;
  • Datorită procesării datelor de pe server, redirecționarea implementată folosind PHP este mai puțin susceptibilă la efectele filtrelor motoarelor de căutare.

Pentru a redirecționa în PHP, este folosită funcția header(). Este folosit pentru a trimite antetul http. Sintaxa sa este:

antet void (șir $șir [, bool $replace = true [, int $http_response_code ]])

Argumente acceptate de funcție:


  • șir $șir – șir antet;

Există două tipuri de acest argument. Primul este pentru trimiterea codului de stare a conexiunii. Începe cu „HTTP/”. Celălalt tip trimite un cod de stare (REDIRECT 302) către browser-ul clientului împreună cu antetul. Acest argument începe cu „Locație:”


  • bool $replace este un atribut opțional de tip bool . Responsabil pentru anularea antetului anterior. Dacă este setată la true , antetul sau anteturile anterioare de același tip vor fi înlocuite. Dacă argumentul este setat la false , atunci antetul nu va fi rescris. În mod implicit, această valoare este setată la true ;
  • http_response_code – argumentul forțează codul de răspuns HTTP. Instalarea codului va avea succes cu condiția ca argumentul șir să nu fie gol.

Codul de stare HTTP face parte linia de sus răspunsul serverului. Codul este format din trei numere, urmate de un text explicativ în limba engleză. Prima cifră este responsabilă pentru clasa de status. Redirecționarea corespunde codurilor de la 300 la 307. Descriere completa pot fi găsite în documentația tehnică relevantă.

Când utilizați funcția header() pentru a redirecționa link-uri externe mare importanță are locația apelului său. În cod ar trebui să fie situat deasupra tuturor etichetelor html:


Folosind redirecționarea header().

Pentru a demonstra funcția activată server local trebuie să creați două fișiere. Să numim unul dintre ele redirect.php , iar celălalt redirect2.php . În primul, vom plasa un apel de funcție în următorul format:

Într-un alt fișier punem linia:

echo "Bună ziua! Sunteți în fișierul redirect2.php";


Câteva exemple practice de utilizare a unei redirecționări către php:

  • Forțați transferul codului starea http– când se folosește primul argument al funcției header() de tip „locație”, implicit codul de stare „302” (mutat temporar) este trecut la antet. Acest lucru poate deveni o problemă atunci când mutați o resursă pe alt nume de domeniu. În motoarele de căutare, o astfel de redirecționare temporară poate dura mai mult. La urma urmei, motorul de căutare analizează constant codul de stare. Și scrie „mutat temporar”. Exemplu de rescriere forțată a codului de stare „302” în „301” (mutat permanent):

Rescrierea este posibilă și în două etape. Prima linie rescrie codul de stare, iar a doua redirecționează către o nouă adresă:

  • Utilizarea redirecționării link-urilor externe pentru a redirecționa în funcție de rolul utilizatorului. Rolul este determinat în timpul procedurii de autentificare. Valoarea de procesat este scrisă în variabila $who:

  • Simplificat exemplu practic implementarea redirecționării Link extern– făcând clic pe link vă duce la pagina php. De aici utilizatorul este transferat pe Rambler în 5 secunde. Cod HTML:

Apasă-mă

Codul fișierului Redirect3.php:


Ei bine, iată-ne, învățăm elementele de bază ale redirecționării în PHP. Acum vă puteți prelua în siguranță sarcina de a redirecționa utilizatorii în direcția corectă. Principalul lucru este să nu greșești în direcție, altfel îi vei conduce pe toți utilizatorii către site-ul altcuiva...

Să presupunem că doriți ca pagina https://example.com/final.php să fie afișată utilizatorilor care navighează la pagina https://example.com/initial.php. Acest lucru se poate face cu câteva metode PHP, JavaScript și HTML. În acest articol, vom acoperi fiecare dintre metodele pe care le puteți utiliza pentru a redirecționa PHP către o altă pagină.

Iată câteva variabile pe care le vom folosi:

Folosind funcția Antetul PHP() pentru a redirecționa adresa URL

Dacă doriți să adăugați o redirecționare de la initial.php la final.php , puteți plasa următorul cod pe pagina web initial.php. Trimite un nou antet de locație către browser:

Aici folosim funcția PHP header() pentru a crea redirecționarea. Trebuie să plasați acest cod înaintea oricărui cod HTML sau text. În caz contrar, veți primi o eroare că antetul a fost deja trimis. De asemenea, puteți utiliza tamponarea de ieșire pentru a preveni această eroare de trimitere a antetelor. În exemplul următor aceasta metoda Redirecționări PHP afișate în acțiune:

Pentru a efectua o redirecționare folosind funcția header(), funcția ob_start() trebuie să fie prima funcție din scriptul PHP. Acest lucru va preveni apariția erorilor de antet.

Ca măsură suplimentară, puteți adăuga die() sau exit() imediat după redirecționarea antetului, astfel încât restul codului paginii web să nu se execute. In unele cazuri roboți de căutare sau este posibil ca browserele să nu acorde atenție antetului Locație. Care sunt potențialele amenințări la adresa securității site-ului:

Pentru a fi clar: die() sau exit() nu au nimic de-a face cu redirecționările. Acestea sunt folosite pentru a preveni executarea restului codului de pe pagina web.

Când redirecționați către o pagină în PHP, este recomandat să folosiți adrese URL absolute atunci când specificați valoarea antetului Locație. Dar și adresele URL relative vor funcționa. De asemenea, puteți utiliza această funcție pentru a redirecționa utilizatorii către site-uri externe sau pagini web.

Concluzie Cod JavaScript-redirecționează folosind funcția PHP echo().

Aceasta nu este o soluție PHP pură. Cu toate acestea, este și eficient. poți să folosești Funcția PHP echo() pentru a scoate codul JavaScript care se va ocupa de redirecționare.

Dacă utilizați această soluție, nu va trebui să utilizați tamponarea de ieșire. Acest lucru previne, de asemenea, erori legate de trimiterea antetelor.

Mai jos sunt câteva exemple care folosesc metode diferite JavaScript pentru redirecționare cu pagina curenta altcuiva:

Singurul dezavantaj al acestei metode de redirecționare către un alt site PHP este că JavaScript rulează pe partea clientului. Și vizitatorii dvs. pot avea JavaScript dezactivat.

Utilizarea metaetichetelor HTML pentru redirecționare

De asemenea, puteți utiliza HTML de bază pentru a efectua redirecționarea. Poate părea neprofesionist, dar funcționează. Și nu trebuie să vă faceți griji că JavaScript este dezactivat în browser sau că ați trimis anterior o eroare de antet:

De asemenea, puteți utiliza ultima linie din exemplul anterior pentru a reîmprospăta automat pagina la fiecare „n” secunde. De exemplu, următorul cod va reîmprospăta automat pagina la fiecare 8 secunde:

Concluzie

În acest articol am tratat trei diverse metode redirecționează de la index php, precum și avantajele și dezavantajele acestora. Metoda specifică de utilizat depinde de obiectivele proiectului.

Traducerea articolului „Cum pot face o redirecționare către o adresă URL diferită înainte de încărcarea paginii în PHP” de către echipa prietenoasă de proiect.

Rău Bun

12:06 - Cum se redirecționează utilizatorul către o altă pagină?

Există mai multe soluții:
1) javascript
2) HTML
3) php
4) .htaccess

1) Iată un exemplu de cod pentru limbajul javascript:

Type="text/javascript">

Tot ce trebuie să faceți este să creați un fișier index.htm (sau index.html sau index.php - UNUL dintre ele! acest lucru este important) și să introduceți codul în el, după ce ați înlocuit http://www.mysite.com/ cu adresa site-ului dvs.
Puteți specifica calea către un folder sau direct către un fișier, de exemplu http://www.mysite.com/cat/file.php

Browserul utilizatorului va fi imediat* redirecționat către pagina pe care ați specificat-o.
*dacă browserul acceptă redirecționarea. Acum aproape toate browserele acceptă redirecționarea, cu excepția cazului în care browserul este configurat inteligent de către utilizator =)

Pentru a afișa utilizatorului un mesaj înainte de a redirecționa, utilizați o versiune diferită a scriptului:

type="text/javascript"> Acum vei fi mutat!

%Dacă browserul dumneavoastră nu acceptă redirecționarea, faceți clic aici: %AICI

http://somesite2.com/ -- înlocuiți cu adresa site-ului dvs.

2) Pentru a redirecționa browserul utilizatorului folosind HTML, utilizare META etichetă:

http://www.blahblahblahsite.com/ -- înlocuiți cu adresa site-ului dvs. web
10 - înseamnă că browserul va fi redirecționat după 10 secunde.
Setați la 0 pentru redirecționare imediată.
Dacă setați un timeout, atunci în fișier puteți lăsa un mesaj utilizatorului, de exemplu:

În 10 secunde vei fi transportat!

Dacă browserul dvs. nu acceptă redirecționarea, faceți clic aici: %AICI

3) Trimitere imediată cu folosind PHP:

http://myownsite.com/folder/ -- înlocuiți cu adresa site-ului sau a paginii dvs.
Codul ar trebui să fie plasat într-un fișier cu extensie .php, de exemplu index.php

4) Redirecționare imediată folosind .htaccess:

Ca orice program, un server web are anumite setări. Dar, ca utilizator Apache, este posibil să nu aveți drepturi de a modifica configurația Apache prin fișierele sale principale, efectul căruia se aplică tuturor utilizatorilor acestui server. Dar, puteți modifica unele fișiere de configurare, care se aplică numai site-ului dvs. Unul dintre aceste fișiere este .htaccess

Acesta este un fișier setări flexibile Server web Apache. „Flexibil” înseamnă că de îndată ce modificați ceva în acest fișier, modificările intră imediat în vigoare. De fapt, scopul fișierelor .htaccess este de a oferi un mijloc pentru setări Apache pentru utilizatorii care nu pot modifica fișierul principal de configurare httpd.conf (acest fișier este principalul Fișier de configurare Serverul Apache și acțiunile sale se aplică pe deplin tuturor utilizatorilor acestei copii a Apache).

Acest fișier nu este accesibil utilizatorului web din browser. Dacă fișierul .htaccess se află în directorul rădăcină al serverului, atunci acțiunile sale se aplică întregului server, cu excepția acelor foldere în care se află un alt fișier .htaccess (și cu excepția tuturor folderelor „sub” acest folder cu al doilea . htaccess).

Configurația fișierului .htaccess vă poate ajuta situatii diferite, dar chiar și cea mai mică eroare de sintaxă (cum ar fi lipsa unui spațiu unde este necesar) poate face ca conținutul site-ului dvs. să se afișeze incorect sau să nu se afișeze deloc. Deoarece .htaccess este ascuns fișier de sistem asigurați-vă că clientul dvs. FTP este setat să se afișeze fișiere ascunse.

Creați unul gol fisier text prin utilizarea editor de text, cum ar fi Notepad, și salvați-l ca htaccess.txt. Motivul pentru care trebuie să salvați fișierul în htaccess.txt este că mulți OS iar aplicațiile FTP nu pot citi fișierele .htaccess în mod implicit. După încărcarea pe server, puteți redenumi fișierul în .htaccess.

Redirecționează întregul site către orice alt domeniu (de exemplu, example.net este redirecționat către example.com).

(PHP 4, PHP 5, PHP 7)

header — Trimiteți un antet HTTP brut

Descriere

antet (șir $header [, bool $replace = TRUE [, int $http_response_code ]]): void

header() este folosit pentru a trimite un antet HTTP brut. Consultați » specificația HTTP/1.1 pentru mai multe informații despre anteturile HTTP.

Amintiți-vă că header() trebuie apelat înainte ca orice rezultat real să fie trimis, fie prin etichete HTML normale, linii goale într-un fișier, fie din PHP. Este o eroare foarte comună să citiți codul cu funcții include , sau require , sau altă funcție de acces la fișiere și să aveți spații sau linii goale care sunt scoase înainte ca header() să fie apelat. Aceeași problemă există atunci când utilizați un singur fișier PHP/HTML.


Parametrii

Șirul antetului.

Există două apeluri de antet pentru cazuri speciale. Primul este un antet care începe cu șirul " HTTP/" (cazul nu este semnificativ), care va fi folosit pentru a afla Stare HTTP cod de trimis. De exemplu, dacă ați configurat Apache să folosească un script PHP pentru a gestiona cererile de fișiere lipsă (folosind ErrorDocument directivă), poate doriți să vă asigurați că scriptul dvs. generează codul de stare adecvat.

Al doilea caz special este antetul „Locație:”. Nu numai că trimite acest antet înapoi la browser, dar returnează și a REDIRECŢIONA(302) codul de stare către browser, cu excepția cazului în care 201 sau a 3xx codul de stare a fost deja setat.

A inlocui

Parametrul opțional de înlocuire indică dacă antetul ar trebui să înlocuiască un antet similar anterior sau să adauge un al doilea antet de același tip. În mod implicit, va înlocui, dar dacă treceți FALSE ca al doilea argument, puteți forța mai multe antete de același tip. De exemplu:

Http_response_code

Forțează codul de răspuns HTTP la valoarea specificată. Rețineți că acest parametru are efect numai dacă antetul nu este gol.

Valori returnate

Nu se returnează nicio valoare.

Jurnalul modificărilor Descrierea versiunii
5.1.2 Această funcție împiedică acum trimiterea mai mult de un antet simultan ca protecție împotriva atacurilor de injectare a antetului.
Exemple

Exemplul #1 Descărcare dialog

Dacă tu vrei utilizatorului să i se solicite să salveze datele pe care le trimiteți, cum ar fi un fișier PDF generat, puteți utiliza antetul » Content-Disposition pentru a furniza un nume de fișier recomandat și pentru a forța browserul să afișeze dialogul de salvare.