Si të vendosni një ridrejtim në një URL tjetër në PHP përpara se faqja të ngarkohet? Ridrejtimi PHP i lidhjeve të jashtme. Ridrejtoni me kohëmatës me vonesë dhe numërim mbrapsht. Fshehja e lidhjeve të referimit

Çdokush mund të dërgojë. Por ridrejtimi i saktë është një art i tërë. Por ridrejtimi i përdoruesve në rrugën e duhur në internet është edhe më i vështirë. Një ridrejtim në php është më i përshtatshmi për këtë.

Çfarë lloj ridrejtimi?

Në programimin në ueb, lindin situata kur duhet të ridrejtoni një përdorues duke ndjekur një lidhje në një adresë tjetër. Sigurisht, në shikim të parë, zbatimi i një ridrejtimi të tillë duket pak "ilegal". Në praktikë, një ridrejtim i tillë është në kërkesë jo vetëm midis sulmuesve, por edhe midis webmasterëve të ndershëm:

Në cilat raste mund të kërkohet një ridrejtim:

  • Kur motori i faqes zëvendësohet, arkitektura e të gjithë burimit ndryshon si rezultat. Atëherë lind problemi se si të bëhet një ridrejtim;
  • Kur struktura e një burimi rivizatohet, seksione të tëra ose një material shtohen, fshihen ose transferohen. Ndërsa ky proces po ndodh, është përkohësisht e mundur të ridrejtoni përdoruesin në seksionin e dëshiruar;
  • Nëse faqja ka ndryshuar së fundi emrin e saj të domenit, pas ndryshimit të emrit të domenit, ai i vjetër do të shfaqet ende në rezultatet e kërkimit për ca kohë. Në këtë rast, përdoruesi do të ridrejtohet në domenin e ri automatikisht nga motori i kërkimit;
  • Gjatë procesit të autorizimit, si rregull, në një faqe interneti të madhe ka dy grupe përdoruesish: vizitorë të zakonshëm dhe administratorë të burimeve. Në këtë rast, ka kuptim të zbatohet një ridrejtim për secilin përdorues sipas të drejtave dhe rolit të tij. Pas autorizimit, administratori ose moderatorët e faqes shkojnë në pjesën administrative të burimit dhe vizitorët shkojnë në pjesën e përdoruesit të burimit.
Karakteristikat e ridrejtimit në php

Ndryshe nga gjuhët e tjera, PHP ka disa përparësi në zbatimin e ridrejtimeve:

  • Php është një gjuhë programimi nga ana e serverit. Prandaj, ridrejtimi nuk do të ndodhë në kodin html të faqeve të shfaqura në shfletues, por në një skript të vendosur në server;
  • Ridrejtimi në php mund të zbatohet në disa mënyra. E cila e zgjeron shumë aplikimin e saj;
  • Për shkak të përpunimit të të dhënave në server, ridrejtimi i zbatuar duke përdorur PHP është më pak i ndjeshëm ndaj efekteve të filtrave të motorëve të kërkimit.

Për të ridrejtuar në PHP, përdoret funksioni header(). Përdoret për të dërguar kokën http. Sintaksa e tij është:

koka e pavlefshme (vargu $string [, bool $replace = e vërtetë [, int $http_response_code ]])

Argumentet e pranuara nga funksioni:


  • vargu $string – vargu i kokës;

Ekzistojnë dy lloje të këtij argumenti. E para është për dërgimin e kodit të statusit të lidhjes. Fillon me "HTTP/". Lloji tjetër dërgon një kod statusi (REDIRECT 302) në shfletuesin e klientit së bashku me kokën. Ky argument fillon me "Vendndodhja:"


  • bool $replace është një atribut opsional i tipit bool . Përgjegjës për tejkalimin e titullit të mëparshëm. Nëse vendoset në true, titulli i mëparshëm ose titujt e të njëjtit lloj do të zëvendësohen. Nëse argumenti vendoset në false, atëherë titulli nuk do të rishkruhet. Si parazgjedhje, kjo vlerë është vendosur në true;
  • http_response_code – argumenti detyron kodin e përgjigjes HTTP. Instalimi i kodit do të jetë i suksesshëm me kusht që argumenti i vargut të mos jetë bosh.

Kodi i statusit HTTP është pjesë e linjës kryesore të përgjigjes së serverit. Kodi përbëhet nga tre numra, të ndjekur nga një tekst shpjegues në anglisht. Shifra e parë është përgjegjëse për klasën e statusit. Ridrejtimi korrespondon me kodet nga 300 në 307. Përshkrimi i plotë i tyre mund të gjendet në dokumentacionin teknik përkatës.

Kur përdorni funksionin header() për të ridrejtuar lidhjet e jashtme, vendndodhja e thirrjes së tij ka një rëndësi të madhe. Në kod duhet të vendoset mbi të gjitha etiketat html:


Duke përdorur ridrejtimin header().

Për të demonstruar funksionalitetin e funksionit në një server lokal, duhet të krijoni dy skedarë. Le ta quajmë njërin prej tyre redirect.php, dhe tjetrin redirect2.php. Brenda të parës do të vendosim një thirrje funksioni në formatin e mëposhtëm:

Në një skedar tjetër vendosim rreshtin:

echo "Përshëndetje! Ju jeni në skedarin redirect2.php";


Disa shembuj më praktikë të përdorimit të një ridrejtimi në php:

  • Force kodin e statusit http – kur përdoret argumenti i parë i funksionit header() të tipit “location”, kodi i statusit të paracaktuar “302” (i zhvendosur përkohësisht) kalon në kokë. Kjo mund të bëhet problem kur zhvendosni një burim në një emër domeni tjetër. Në motorët e kërkimit, një ridrejtim i tillë i përkohshëm mund të zgjasë më shumë. Në fund të fundit, motori i kërkimit analizon vazhdimisht kodin e statusit. Dhe thotë "i zhvendosur përkohësisht". Shembull i rishkrimit të detyruar të kodit të statusit "302" në "301" (i zhvendosur përgjithmonë):

Rishkrimi është gjithashtu i mundur në dy faza. Rreshti i parë rishkruan kodin e statusit dhe i dyti ridrejton në një adresë të re:

  • Përdorimi i ridrejtimit të lidhjeve të jashtme për të ridrejtuar në varësi të rolit të përdoruesit. Roli përcaktohet gjatë procedurës së vërtetimit. Vlera që do të përpunohet shkruhet në ndryshoren $who:

  • Një shembull praktik i thjeshtuar i zbatimit të një ridrejtimi të lidhjes së jashtme - klikimi në një lidhje çon në një faqe php. Nga këtu përdoruesi transferohet në Rambler në 5 sekonda. Kodi HTML:

Më shtyp mua

Kodi i skedarit Redirect3.php:


Epo, këtu jemi, duke mësuar bazat e ridrejtimit në PHP. Tani mund të merrni me siguri detyrën e ridrejtimit të përdoruesve në drejtimin e duhur. Gjëja kryesore është të mos bëni një gabim në drejtim, përndryshe do t'i çoni të gjithë përdoruesit tuaj në faqen e dikujt tjetër...

Ndryshuar për herë të fundit më 25 shkurt 2017 nga Vincy.

Mekanizmi i ridrejtimit të PHP përdoret për të lundruar përdoruesin nga një faqe në tjetrën pa klikuar asnjë lidhje. Kjo do të jetë e dobishme në rrethana të tilla ku ridrejtimi duhet të bëhet në sfond. Për shembull, kur përdoruesi po hyn në portën e pagesës, ridrejtimi duhet të bëhet automatikisht për të njoftuar URL-në duke përdorur skriptin PHP.

PHP ofron funksion të paracaktuar, të quajtur header(), për ridrejtimin e URL-së. Duke përdorur këtë funksion header(), ne duhet të dërgojmë kokën e vendndodhjes duke specifikuar URL-në në të cilën duhet të ridrejtohet faqja.

Ndryshe nga ku ka disa mënyra për të trajtuar punët e ridrejtimit të URL-së bazuar në shfletuesin, PHP shmang një konfuzion të tillë dhe funksioni header() krijon të njëjtin efekt në të gjithë shfletuesit. Vetëm për këtë, ne kemi konkluduar me artikullin e ridrejtimit të JavaScript se ridrejtimi nga ana e serverit është i preferueshëm.

Kreu i sintaksës së ridrejtimit të PHP ("Vendndodhja: target-url");

Në sintaksën e mësipërme të ridrejtimit PHP, ne duhet të zëvendësojmë me një URL të vlefshme në të cilën duam të lëvizim. Ne mund të specifikojmë ose URL absolute ose URL relative për këtë titull vendndodhjeje. Nëse specifikojmë URL-në relative, ajo do të kërkojë faqen në domenin tonë ku ekzistojmë.

Shënim: Përpara se të specifikojmë URL-në e faqes për kokën e vendndodhjes, duhet të sigurohemi që faqja ekziston.

Kujdes përpara Ridrejtimit

Përpara ekzekutimit të ridrejtimit të PHP, duhet të sigurohemi se asnjë dalje nuk është dërguar në shfletuesin përpara linjës ku ne thërrasim funksionin header(). Për shembull,

Echo "Redirect PHP"; header ("Vendndodhja: sajti");

Ky skript do të shfaqë njoftimin paralajmërues të mëposhtëm në shfletues.

Paralajmërim: Nuk mund të modifikohet informacioni i kokës - titujt janë dërguar tashmë nga (...

Ai nuk është i zbatueshëm vetëm për funksionin e kokës, por për të gjitha funksionet PHP si set_cookie(), session_start() etj., çfarëdo që mund të modifikojë kokën. Për këtë, ne duhet të heqim të gjithë përmbajtjen që do të ndalojë dërgimin e kokës së vendndodhjes në shfletues.

Mënyrat e mundshme të dërgimit të prodhimit
  • Përmbajtja HTML si teksti ose etiketat.
  • Hapësira të panevojshme të bardha përpara kufijve të PHP.
  • Gabim PHP ose njoftime paralajmëruese që ndodhin përpara ridrejtimit të thirrjes.
  • PHP, si, echo(), print().
Masat e sigurisë nga dalja që dërgohen përpara ridrejtimit të PHP
  • Meqenëse përmbajtja HTML duhet të dërgohet përpara ridrejtimit, ne mund të ndajmë logjikën PHP nga përmbajtja HTML.
  • Për të qenë në anën e sigurisë mund të vendosim dalje komandë pas deklaratës së ridrejtimit të skedarit PHP. Për shembull, header ("Vendndodhja: sajti"); dalje;
  • Ne mund të aktivizojmë bufferimin e daljes PHP që të ndalojë dërgimin e prodhimit në shfletues dhe të ruhet në një buffer në vend të kësaj.

në shtëpi > Programet > Apache

Ridrejtimi 301 - ridrejtimi i saktë nëpërmjet htaccess dhe kokës php

Ridrejtimi 301 (Ridrejtimi i Përhershëm 301) përdoret në disa raste: kur ndryshoni një domen, kur lëvizni një faqe siti, për të bashkuar emrin e sajtit me dhe pa www. Kjo është e rëndësishme për përcjelljen e renditjes së faqeve (PR) dhe mbajtjen e trafikut të kërkimit.

Unë vetë u përballa me nevojën për të kur, pasi kalova portalin tim nga zona com në ru, zbulova se Google, Yandex dhe motorët e tjerë të kërkimit natyrisht nuk e "harrojnë" faqen e vjetër (pjesërisht edhe për faktin se unë kishte një konfigurim të gabuar të faqes së vet për të trajtuar 404 gabime, të cilat kthenin kodin e përgjigjes 200 OK). Për më tepër, Google la PR=0 për faqen e re për gjashtë muaj, megjithëse mbeti PR=4 për atë të vjetër.

Tema e ridrejtimeve 301 diskutohet vazhdimisht në forume të ndryshme SEO dhe çdo motor kërkimi ka seksione të veçanta në sistemin e tij të ndihmës. Ndërsa po e kuptoja, gjeta opsionet për organizimin e një ridrejtimi të renditur më poshtë, disa prej të cilave i provova vetë.

Një ridrejtim 301 është metoda më e mirë për të ruajtur renditjen e motorit tuaj të kërkimit kur lëvizni një faqe ose sajt. Kodi "301" interpretohet si "i zhvendosur përgjithmonë".

  • Ridrejtim i thjeshtë (në skedarin .htaccess ose httpd.conf për Apache): Ridrejto 301 / http://www.you.com/new.htm
    Ku:
    Ridrejtimi 301 është një udhëzim që thotë se faqja është zhvendosur
    / - do të thotë se çdo gjë nga niveli më i lartë i faqes, duke përfshirë të gjitha nëndrejtoritë, do të ridrejtohen
    http://www.you.com/new.htm - faqe ose faqe e re (mos harroni të vendosni "/" e fundit nëse ridrejtimi është në sit).

    Për të ridrejtuar vetëm një faqe, duke ruajtur PR të faqes së vjetër:
    Ridrejto 301 /old/old.htm http://www.you.com/new.htm
    Ku:
    /old/old.htm - rruga dhe emri i faqes së vjetër

    Sintaksë e ngjashme për ridrejtimin e faqes:
    Ridrejtimi i përhershëm / http://www.you.com/

    Shembull i ridrejtimit të drejtorisë:
    Ridrejto Permanent /old-directory http://www.domain.com/new-directory/

    Për shembull, ne do t'i ridrejtojmë ata që hynë në test në www.test.com, të tjerët në enter.test.com (rendi i hyrjeve është i rëndësishëm):

    Ridrejto permanent /test http://www.test.com/ Ridrejto permanent / http://enter.test.com/

    Shënim: Për qëllimet e mia (ndryshimi i domenit), opsioni i parë i një ridrejtimi të thjeshtë 301 ishte i mjaftueshëm.

  • Duke përdorur mod_rewrite (të shkruar në skedarin .htaccess):

    Problemi klasik i bashkimit të emrave të faqeve me dhe pa www zgjidhet si kjo:

    Opsionet +FollowSymLinks RewriteEngine në RewriteCond %(HTTP_HOST) ^faqen tuaj\.com RewriteRule ^(.*)$ http://www.yoursite.com/$1 .

    ose sintaksë alternative:

    Opsionet +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^domain\.com$ RewriteRule ^(.*)$ http://www.domain.com/$1

    Shënimi do të thotë: ridrejtoni klientin dhe dërgojini atij një kod statusi 301 (R=301) dhe bëjeni këtë rregull të zgjasë (L).

    Ridrejtimi i një domeni të vjetër në një të ri:

    Opsionet +FollowSymLinks RewriteEngine në RewriteRule (.*) http://www.newdomain.com/$1

    Për shembull, nëse dëshironi që skedari rewrite.html të ngarkohet në vend të rewrite.htm, shtoni në .htaccess:

    RewriteEngine në RewriteBase / RewriteRule ^rewrite\.htm$ rewrite.html

    Për të zëvendësuar të gjithë skedarët .htm me skedarët .html:

    RewriteEngine në RewriteBase / RewriteRule ^(.*)\.htm$1.html
  • Ridrejtoni në PHP: Është më mirë të specifikoni HTTP/1.1, pasi ato më të vjetrat nuk mbështesin pritjen e përbashkët. Mos harroni se përpara se të thirret titulli, asgjë nuk duhet të printohet (p.sh. jehona ose printimi). Prandaj, është më mirë ta vendosni këtë kod në fillim të skriptit PHP. Një version më i plotë i një ridrejtimi php me ruajtjen e faqes së transmetuar dhe parametrave të thirrjes:
  • Ridrejto te ASP
  • Ridrejto te ASP.NET private void Page_Load(object sender, System.EventArgs e) ( Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.new-url.com") ;)
  • Ridrejto te ColdFusion
  • Ridrejto duke përdorur meta refresh

    ku 0 është vonesa e ridrejtimit në sekonda, newdomain.com është faqja në të cilën do të ridrejtojmë. Disa shfletues të vjetër nuk mbështesin rifreskimin meta me një vlerë prej 0 për pajtueshmërinë, mund ta vendosni në një vlerë jo zero, megjithëse, për mendimin tim, kjo nuk është më e rëndësishme. Një ridrejtim i tillë nuk do të jetë në gjendje të ngjitë faqet tuaja së bashku (me ose pa www) dhe të transferojë PR, pasi ajo injorohet nga motorët e kërkimit. Ai kthen një kod 200 OK, që është një faqe normale. Kjo teknikë është e njohur me spammers, kështu që duhet të përdoret vetëm për faqet që nuk do të indeksohen.

  • Ridrejto duke përdorur JavaScript

    Opsionet e ridrejtimit të JavaScript shpesh zbatohen duke përdorur funksionin setTimeout ("funksion", vonesë).

    Për shembull, për të klikuar automatikisht në butonin "Dërgo" të formularit "formulari i kërkimit" 0.1 sekonda pas ngarkimit të kodit:

    setTimeout("document.forms["forma e kërkimit"].Submit.click()", 100);

    Ju mund të caktoni çdo veprim në butonin "Dërgo", për shembull, hapni një URL të re në këtë dritare. Nga rruga, ridrejtime të tilla janë më të zakonshme kur organizoni Dorways - shfletuesi i përdoruesit do të ridrejtohet në një faqe tjetër, dhe një robot kërkimi që "nuk e kupton" JavaScript do të indeksojë këtë faqe, e cila është e paarritshme për përdoruesin. Zhvilluesit e portës postojnë tekst mbi të, të mbushur me fjalë kyçe "të nevojshme".

    Për të ridrejtuar thjesht në një faqe tjetër, mund të futni pas një prej opsioneve të kodit JavaScript:

    • vendndodhje = "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");
    Në rastin e fundit, nuk do të jetë më e mundur të ktheheni në faqen që ka kryer ridrejtimin, pasi adresa e saj fshihet nga historia, gjë që shpesh është e nevojshme. Nëse keni nevojë për një vonesë kohore, mund të regjistroni vendndodhjen="http://www.newdomain.com"; si funksion dhe futeni në setTimeout("function()", delay_in_ms); Një ridrejtim në JavaScrupt nuk është një ridrejtim 301 dhe nuk do të transferojë PR të faqes dhe nuk do të jetë në gjendje të sigurojë bashkimin e saj.
  • Le të vërejmë gjithashtu disa veçori të ridrejtimeve:
    • Metodat e ridrejtimit .htaccess funksionojnë vetëm në serverët Linux që kanë Apache me modulin Mod-Rewrite të aktivizuar.
    • Përdorimi i .htaccess krijon ngarkesë shtesë në serverin Apache, është më efikase të shkruani të njëjtat komanda në skedarin e konfigurimit të tij hpptd.conf, por, si rregull, webmaster nuk ka qasje në të.
    • Ridrejtimi 301 ju lejon të kurseni trafik dhe të transferoni faqet PR në motorët e kërkimit (për Google me siguri).
    • Procesi i ngjitjes dhe transferimit të PR kërkon një kohë të gjatë - deri në disa muaj dhe gjithashtu varet nga motori i kërkimit, kështu që mos e fshini faqen ose faqen e vjetër derisa të ndodhë transferimi përfundimtar.
    • Disa motorë kërkimi kërkojnë cilësime shtesë për bashkimin e faqeve, për shembull, për Yandex duhet të specifikoni gjithashtu robots.txt

    konkluzioni.

    Një mënyrë e sigurt për të ridrejtuar faqet e vjetra në ato të reja ose një faqe të vjetër në një adresë të re, duke ruajtur pozicionet në motorët e kërkimit, është përdorimi i një ridrejtimi 301, i cili gjithashtu do t'ju lejojë të transferoni renditjen e vjetër të faqes në faqen e re. faqe.

    Le të themi se dëshironi të shfaqni faqen https://example.com/final.php për përdoruesit që shkojnë në faqen https://example.com/initial.php. Kjo mund të bëhet duke përdorur disa metoda PHP, JavaScript dhe HTML. Në këtë artikull, ne do të mbulojmë secilën nga metodat që mund të përdorni për të ridrejtuar PHP në një faqe tjetër.

    Këtu janë disa variabla që do të përdorim:

    Përdorimi i funksionit PHP header() për të ridrejtuar një URL

    Nëse dëshironi të shtoni një ridrejtim nga fillestar.php në final.php, mund të vendosni kodin e mëposhtëm në faqen e internetit fillestare.php. Ai dërgon një kokë të re vendndodhjeje në shfletues:

    Këtu ne përdorim kokën e funksionit PHP () për të krijuar ridrejtimin. Ju duhet ta vendosni këtë kod përpara çdo HTML ose teksti. Përndryshe, do të merrni një gabim që titulli është dërguar tashmë. Ju gjithashtu mund të përdorni bufferimin e daljes për të parandaluar këtë gabim të dërgimit të titujve. Shembulli i mëposhtëm tregon këtë teknikë të ridrejtimit të PHP në veprim:

    Për të kryer një ridrejtim duke përdorur funksionin header(), funksioni ob_start() duhet të jetë funksioni i parë në skriptin PHP. Kjo do të parandalojë që të ndodhin gabime në kokë.

    Si masë shtesë, mund të shtoni die() ose exit() menjëherë pas ridrejtimit të kokës në mënyrë që pjesa tjetër e kodit të faqes së internetit të mos ekzekutohet. Në disa raste, robotët e kërkimit ose shfletuesit mund të mos i kushtojnë vëmendje treguesit në kokën e vendndodhjes. Cilat janë kërcënimet e mundshme për sigurinë e sitit:

    Kur ridrejtoni në një faqe në PHP, rekomandohet të përdorni URL absolute kur specifikoni vlerën e kokës së vendndodhjes. Por URL-të relative do të funksionojnë gjithashtu. Ju gjithashtu mund ta përdorni këtë veçori për të ridrejtuar përdoruesit në sajte ose faqe të jashtme të internetit.

    Dalja e kodit të ridrejtimit të JavaScript duke përdorur funksionin PHP echo().

    Kjo nuk është një zgjidhje e pastër PHP. Megjithatë, është gjithashtu efektive. Ju mund të përdorni funksionin PHP echo() për të nxjerrë kodin JavaScript që do të trajtojë ridrejtimin.

    Nëse përdorni këtë zgjidhje, nuk do t'ju duhet të përdorni buferimin e daljes. Kjo gjithashtu parandalon gabimet që lidhen me dërgimin e titujve.

    Më poshtë janë disa shembuj që përdorin metoda të ndryshme JavaScript për të ridrejtuar nga faqja aktuale në një tjetër:

    E vetmja pengesë e kësaj metode të ridrejtimit në një faqe tjetër PHP është se JavaScript funksionon në anën e klientit. Dhe vizitorët tuaj mund të kenë JavaScript të çaktivizuar.

    Përdorimi i meta etiketave HTML për ridrejtim

    Ju gjithashtu mund të përdorni HTML bazë për të kryer ridrejtimin. Mund të duket joprofesionale, por funksionon. Dhe nuk duhet të shqetësoheni nëse JavaScript është çaktivizuar në shfletuesin tuaj ose keni dërguar më parë një gabim në kokë:

    Mund të përdorni gjithashtu rreshtin e fundit nga shembulli i mëparshëm për të rifreskuar automatikisht faqen çdo "n" sekonda. Për shembull, kodi i mëposhtëm do të rifreskojë automatikisht faqen çdo 8 sekonda:

    konkluzioni

    Në këtë artikull, unë shikova tre metoda të ndryshme të ridrejtimit të indeksit php, së bashku me avantazhet dhe disavantazhet e tyre. Metoda specifike për t'u përdorur varet nga objektivat e projektit.

    Përkthimi i artikullit "Si mund të bëj një ridrejtim në url të ndryshëm përpara ngarkimit të faqes në PHP" nga ekipi miqësor i projektit.

    Mire keq



    
    Top