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...

Çdo përdorues i internetit ka hasur në ridrejtim (aka "ridrejtim"). Thjesht zgjidhni çdo faqe nga rezultatet e kërkimit në motorin e kërkimit dhe motori i kërkimit do t'ju ridrejtojë automatikisht në sit. Në këtë artikull do të flasim për llojet e ridrejtimeve dhe si t'i vendosni ato.

Operatorët bazë të shprehjes së rregullt

Së pari, le të shohim operatorët bazë të shprehjeve të rregullta (flamujt, modifikuesit, karakteret speciale):

Personazhe speciale:

  • ^ - kufiri i majtë (fillimi i rreshtit);
  • $ - kufizim në të djathtë (fundi i rreshtit);
  • . - çdo simbol;
  • () - ndryshore;
  • \ — arratisja (karakteri pas \ konsiderohet karakter i rregullt, jo karakter i veçantë);
  • — varg vlerash;
  • ! - karakter i veçantë mohues.

Modifikuesit:

  • ? — simboli përsëritet 0 ose 1 herë;
  • + — 1 ose më shumë karaktere (deri në 65536);
  • * - 0 ose më shumë karaktere (deri në 65536).
Si të vendosni ridrejtimin 301 htaccess

Le të fillojmë me 301 ridrejtime në htaccess. Së pari, është një ridrejtim automatik nga një adresë në tjetrën. Mund të përdoret mirë në rastin kur një sajt transferohet nga protokolli http në https, kur faqja është rikonfiguruar nga adresat "me madhësi të plotë" në CNC (d.m.th. ishte https://www.karcher.xyz/content /news/31-01 -2017/razdatka, u bë https://www.karcher.xyz/ razdatka), si dhe për “ngjitjen” e faqeve dublikate. Së dyti, një ridrejtim 301 u thotë motorëve të kërkimit se "djema, adresa që keni nuk funksionon më, kështu që shkoni atje" dhe ata thonë: "OK, ne do ta marrim parasysh këtë". Kështu, ridrejtimi ndodh pa dhimbje, pa humbje të pozicioneve dhe masës së lidhjes.

Por çfarë ndodh nëse “Oh, çfarë dreqin? Nëse shqetësohem me ridrejtimet, thjesht do të humbas kohë!”? Ju mund ta bëni këtë, POR... historia e faqes "e vjetër" do të humbasë, dhe ajo "e re" do të renditet "nga e para". Si rezultat, ka një humbje të pozicioneve dhe masës së lidhjes (kjo është në rastin më të mirë).

Opsionet për përdorimin e ridrejtimeve 301:

  • Bashkimi i domenit;
  • Zhvendosja e faqes në një adresë tjetër (mund të jetë e dobishme nëse faqja bie nën ndonjë filtër);
  • Për të rritur TCI, treguesit PR dhe për të rritur trafikun kur blini një domen tjetër (vendosni një ridrejtim në një burim që duhet të rrisë TCI dhe PR);
  • Kur ndryshoni motorin e faqes (në këtë rast, kërkohet rreptësisht vendosja e ridrejtimeve 301, përndryshe garantohet një humbje e plotë e trafikut);
  • kur kaloni nga http në https;
  • ngjitja "merr"

etj., të gjitha arsyet nuk mund të renditen.

301 Ridrejtoni kur ndryshoni domenin e faqes kryesore

Pra, ju keni vendosur të ndryshoni domenin tuaj. Ne ofrojmë menjëherë një zgjidhje të gatshme:

  • duke ripunuar robots.txt në domenin e vjetër. Teksti i përfunduar i skedarit:

Agjenti i përdoruesit: Yandex

Pritësi:newsite.com

  • konfiguroni një ridrejtim 301 për të gjitha faqet e sajtit (përveç skedarit robots.txt) duke përdorur kodin më poshtë:

RewriteCond %(REQUEST_FILENAME) robots.txt$

RewriteRule ^([^/]+) $1 [L]

RewriteCond %(HTTP_HOST) !^www\.site\.com

Ridrejtimi 301 kur ndryshon adresën e faqes

Një ridrejtim i faqes (kur ndryshon adresa e faqes) kryhet duke përdorur kodin më poshtë:

RewriteEngine Aktiv

RewriteCond %(HTTP_HOST) ^www\.stokrat\.org$

RewriteRule ^stranica/nastrojka-301-redirekta/$ https://www.site/newpage/

Është ky kod që përdoret kur "lëvizni" faqet, për shembull, në një CNC.

Vendosni një ridrejtim nga www në një domen pa www në htaccess

Përmend www. në adresën e domenit nuk ka qenë e rëndësishme për një kohë të gjatë. Megjithatë, faqet me www. i plotë. Bashkimi i domeneve nga www. dhe pa duhet të bëhet në mënyrë rigoroze të detyrueshme, sepse motorët e kërkimit i perceptojnë këto 2 domene si 2 sajte të ndryshme me TCI të ndryshme, PR, trafik, masë lidhjesh dhe gjithçka tjetër. Prandaj, njëri prej tyre është origjinali, dhe i dyti është një "mashtrues" me "përmbajtje të vjedhur". Për të parandaluar që kjo të ndodhë - domenet me www. dhe pa të është e nevojshme ta "ngjitni së bashku" duke përdorur ridrejtime 301. Kodi i konfigurimit është më poshtë.

Kodi i ridrejtimit nga www në jo-www në htaccess duket si ky:

RewriteEngine ndezur
RewriteCond %(HTTP_HOST) ^www.site.ru$

Tani le të kuptojmë direktivat.

RewriteEngine ndezur/fikur - në gjuhën e thjeshtë njerëzore - shërben si ndërprerës për 301 ridrejtime.

RewriteCond - kjo direktivë specifikon kushtet për "shkaktimin" e direktivës së ardhshme.

RewriteRule është një direktivë për konvertimin e një adrese në një tjetër.

Vendosni ridrejtimin 301 nga http në https përmes htaccess

Lëvizja nga http në https konsiderohet nga shumë si një "trend modern". Megjithatë, sot kjo masë është e detyrueshme (edhe pse formalisht nuk është e tillë). Dhe tani ka ardhur ora kur keni marrë një certifikatë SSL, faqja juaj tashmë po punon si në http ashtu edhe në https. Gjithçka që mbetet për t'u konfiguruar në skedarin .htaccess është një ridrejtim 301 nga versionet http në https të faqeve të faqes. Kodi i konfigurimit është dhënë më poshtë.

RewriteRule ^(.*)$ https://site.ru/$1

Dhe këtu është kodi për një ridrejtim të kundërt nga https në http. Siç mund ta shihni, ndryshimi është vetëm 1 karakter:

RewriteCond %(SERVER_PORT) !^443$

RewriteRule ^(.*)$ http://site.ru/$1

Ridrejto nga faqet index.php, index.html

Në pjesën më të madhe, ne do të flasim për ngjitjen e kopjimeve, nga të cilat mund të ketë një numër të madh.

Meqenëse index.php dhe index.html përmenden në nëntitull, tashmë keni marrë me mend se me ndihmën e 301 ridrejtimeve do të shpëtojmë nga kopjimet e faqes kryesore:

Sidoqoftë, nëse faqja kryesore ka një dublikatë të formularit site.ru/index.php, ka të ngjarë që faqet e mbetura të kenë gjithashtu dublikatë të formularit site.ru/index.php/page.html (me faqen origjinale të adresës .ru/page.html). Kjo është e keqe, kështu që kërkon gjithashtu vendosjen e një ridrejtimi 301 duke përdorur kodin më poshtë:

RewriteRule ^index\.php/(.*)$ /$1

Nuk është e pazakontë që faqja kryesore të ketë një pamje të kopjuar

site.ru/main.html, për të cilën është gjithashtu e nevojshme të regjistrohen 301 ridrejtime në site.ru:

RewriteEngine Aktiv

RewriteCond %(THE_REQUEST) ^(3,9)\ /main\.html\ HTTP/

Ose alternative:

Ridrejto 301 /main.html HYPERLINK "http://site.ru/" http:// faqe. ru/

Tani le të shqyrtojmë situatën e kundërt - kur dëshironi të bashkoni dublikatat duke vendosur ridrejtimin nga site.ru në site.ru/main.html. Ju mund ta bëni këtë duke përdorur kodin më poshtë.

RewriteCond %(REQUEST_URI) (.*/[^/.]+)($|\?)

RewriteRule .* %1.html

RewriteRule ^(.*)/$ /$1.html

Epo, nëse është e rëndësishme për ju që adresat e të gjitha faqeve të brendshme të shfaqen pa .html në fund, atëherë ridrejtimi konfigurohet me kodin e mëposhtëm:

RewriteCond %(REQUEST_URI) \.html$

RewriteRule ^(.*)\.html$ /$1

Tani rreth asaj se si të bëni një ridrejtim nga faqja në faqe, përkatësisht from.htm në pages.html. Për të vendosur një ridrejtim të tillë, thjesht shtoni kodin e mëposhtëm në .htaccess:

RewriteRule ^(.*)\.htm$1.html

Ridrejtimet nga adresat me dhe pa prerje në fund

Së pari, le të shohim një lloj tjetër faqesh të kopjuara - faqe si http://site.xyz/page dhe http://site.xyz/page/ - me përjashtim të vijës së pjerrët në fund, ato nuk ndryshojnë. Mund të konfiguroni ridrejtimin nga e para në të dytën dhe nga e dyta në të parën. Le të shqyrtojmë të dy opsionet:

Ridrejto nga http://site.xyz/page në http://site.xyz/page/:

RewriteCond %(REQUEST_FILENAME) !-f

RewriteCond %(REQUEST_URI) !\..+$

RewriteCond %(REQUEST_URI) !/$

RewriteRule (.*) http://www.site.ru/$1/

Ridrejto nga http://site.xyz/page/ në http://site.xyz/page:

RewriteCond %(REQUEST_FILENAME) !-d

RewriteCond %(REQUEST_URI) ^(.+)/$

RewriteRule ^(.+)/$ /$1

Për më tepër, nuk ka fare rëndësi nëse keni një prerje në fund të adresës pas ridrejtimit apo jo. Gjëja kryesore është që këto adresa janë ngjitur së bashku duke përdorur ridrejtime 301.

Ridrejto te versioni celular i faqes

Sigurisht, nëse faqja juaj funksionon në motorin WordPress ose Joomla, atëherë mund të vendosni një ridrejtim në versionin celular të faqes duke përdorur shtojca.

Sidoqoftë, Google është një ithtar i dizajnit të përgjegjshëm. Prandaj, nuk ka nevojë të ndahet një domen/nëndomain i veçantë për versionin celular. Ato. Google pretendon se "nëse është e mundur të bëhet pa ridrejtime në versionin celular, kjo është pikërisht ajo që duhet të bëni".

Por çfarë të bëni nëse ende nuk mund të bëni pa ridrejtime të tilla?

Ju mund të konfiguroni një ridrejtim nëpërmjet skedarit .htaccess

RewriteEngine Aktiv

RewriteCond %(HTTP_ACCEPT) "tekst\/vnd\.wap\.wml|aplikacion\/vnd\.wap\.xhtml\+xml"

RewriteCond %(REQUEST_URI) ^/$

RewriteRule ^ http://m.domain.com%(REQUEST_URI)

Vendosja e ridrejtimit celular përmes PHP

Ju duhet të përdorni bibliotekën speciale të Zbulimit të celularit, është e nevojshme për të njohur nëse përdoruesi ka ardhur nga një pajisje celulare apo nga një palëvizshme.

$detect = i ri Mobile_Detect;

nëse ($detect->isMobile()) (//code)

nëse ($detect->isTablet()) (//code)

nëse ($detect->isiOS()) (// kodi)

nëse ($detect->isAndroidOS()) (// kodi)

Nga ky kod bëhet e qartë se është e mundur të njihet jo vetëm një kompjuter/smartphone/tabletë, por edhe sistemi i tij operativ.

Ridrejtimi i JavaScript

Kodi i mëposhtëm ridrejtohet te nëndomeni celular. Baza e ridrejtimit është rezolucioni i ekranit - deri në 480 piksele të gjerë. Vetëm në gjerësi, jo në lartësi.

  • nëse (ekrani.gjerësia e ndezur

    Metoda 2. Vendosja e një ridrejtimi në site.com nëpërmjet .htaccess duke futur këtë kod:

    RewriteCond %(QUERY_STRING) ^route=common/home$

    RewriteRule ^index\.php$ http://site.com/?

    Në të njëjtën mënyrë (domethënë, e dyta), mund të vendosni ridrejtime nga adresat e kategorive të vjetra në ato të reja. Si parazgjedhje, adresat e lidhjeve në OpenCart duken diçka si kjo:

    site.com/index.php?path=83_94_113&route=product/category

    Është shumë e dhimbshme të shikosh lidhje të tilla, dhe në kuptimin e mirëfilltë, sepse... Sytë me të vërtetë fillojnë të më dhembin kur shoh adresa të tilla. Në të njëjtin .htaccess mund të konfiguroni një ridrejtim në adresat "njerëzore" si site.com/category duke përdorur kodin e mëposhtëm:

    RewriteCond %(QUERY_STRING) ^rruga=83_94_113&rruga=produkt/kategori$

    RewriteRule ^index\.php$ http://site.com/new-category?

    Por çfarë të bëjmë me adresat dinamike që, për shkak të lidhjes me një seksion specifik, duken si site.com/katalog?c=okna-pvkh ?

    Programuesit kanë kërkuar një zgjidhje për mjaft kohë. Në mënyrë të rastësishme (më saktë, provë dhe gabim), u gjet një zgjidhje. Në këtë rast, ndodh një ridrejtim në faqen kryesore të faqes:

    RewriteCond %(QUERY_STRING) ^c=okna-pvkh$

    Katalogu i RewriteRule http://site.com/?

    Shënime dhe gabime

    Tani le të flasim se si të shmangim gabimet kur vendosni një ridrejtim 301:

    • Sekuenca e rregullave të përcjelljes nuk duhet të shkelet. Pas konfigurimit të ridrejtimit, duhet të siguroheni që cilësimi të mos prodhojë ndonjë "efekt anësor". Nëse shkel sekuencën e rregullave, atëherë ridrejtimet e konfiguruara më parë mund të ndalojnë së funksionuari ose të funksionojnë gabimisht. Nuk duhet të ketë kontradikta në rregulla.
    • Mos ngurroni të përdorni manualet zyrtare, sepse... Ridrejtimet 301 kanë shumë veçori për shkak të sintaksës së tyre komplekse. Është e lehtë të humbasësh disa nuanca gjatë konfigurimit.
    • Pas "përfundimit" të radhës, kryeni GJITHMONË një kontroll të plotë të funksionalitetit të rregullave që janë zbatuar më parë. Vendosja pa kontroll nuk është përcaktim as "për shfaqje". Një karakter shtesë mund të prishë të gjithë faqen ose ta bëjë atë të funksionojë gabimisht. Pas programuesve të tjerë, më shumë se një herë na është dashur të korrigjojmë funksionimin e sajtit, kur ndodh një ridrejtim 301 nga adresa site.com/oldpage në site.com/newpage dhe më pas, duke përdorur të njëjtin ridrejtim 301, ndodh një ridrejtim kthehu te site.com/oldpage dhe më tej " round".

    Epo, në përfundim, ne do të japim disa shembuj kur nuk mund të përdorni fare ridrejtime 301.

    Së pari, "multi-pass", kur ka një seri prej disa 301 ridrejtimesh me radhë. Është shumë më e saktë të vendosni një ridrejtim direkt në adresën "përfunduese".

    Së dyti, nëse për ndonjë arsye ka 2 faqe me përmbajtje të kopjuar, por ju duhet t'i ruani të dyja për përdoruesit.

    Së treti, ridrejtimet "në vendin e gabuar". Ato. nëse faqja ka lëvizur nga adresa e parë në të dytën, dhe kur vendosni një ridrejtim ju tregoni gabimisht adresën e një faqeje krejtësisht të ndryshme.

    Së katërti, ridrejtoni në një faqe që për ndonjë arsye po funksionon shumë gabim. Faqja duhet të funksionojë në mënyrë të qëndrueshme dhe të kthejë ose kodin 200 ose kodin 404.

    Së pesti, ridrejtoni skedarin robots.txt. Kjo është e ndaluar nga rregullat e shumë motorëve të kërkimit. Për më tepër, shumë njerëz bëjnë të njëjtin gabim - kur konfigurojnë një ridrejtim htaccess në https nga http://site.xyz/robots.txt në https://site.xyz/robots.txt. Skedari robots.txt duhet të jetë i aksesueshëm në të dyja adresat pa ndonjë ridrejtim. Saktësisht e njëjta gjë vlen edhe për hartën e faqes xml.

    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:

    Për të qenë të qartë: die() ose exit() nuk kanë të bëjnë me ridrejtimet. Ato përdoren për të parandaluar ekzekutimin e pjesës tjetër të kodit në faqen e internetit.

    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

    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.

    (PHP 4, PHP 5, PHP 7)

    header - Dërgoni një kokë të papërpunuar HTTP

    Përshkrim

    header (string $header [, bool $replace = TRUE [, int $http_response_code ]]) : i pavlefshëm

    header() përdoret për të dërguar një kokë të papërpunuar HTTP. Shikoni » specifikimet HTTP/1.1 për më shumë informacion mbi titujt HTTP.

    Mos harroni se header() duhet të thirret përpara se të dërgohet ndonjë dalje aktuale, qoftë nga etiketat normale HTML, linjat bosh në një skedar ose nga PHP. Është një gabim shumë i zakonshëm të lexosh kodin me funksionet e përfshirjes, ose të kërkosh, ose një funksion tjetër aksesi në skedar, dhe të kesh hapësira ose rreshta bosh që dalin përpara se të thirret header(). I njëjti problem ekziston kur përdorni një skedar të vetëm PHP/HTML.


    Parametrat

    Vargu i kokës.

    Ka dy thirrje të kokës për raste të veçanta. E para është një kokë që fillon me vargun " HTTP/" (rasti nuk është i rëndësishëm), i cili do të përdoret për të kuptuar kodin e statusit të HTTP për t'u dërguar. Për shembull, nëse keni konfiguruar Apache që të përdorë një skript PHP për të trajtuar kërkesat për skedarët që mungojnë (duke përdorur Dokumenti i gabimit direktiva), mund të dëshironi të siguroheni që skripti juaj gjeneron kodin e duhur të statusit.

    Rasti i dytë i veçantë është titulli "Vendndodhja:". Jo vetëm që e dërgon këtë kokë përsëri në shfletues, por gjithashtu kthen a RIDIREJTO(302) kodi i statusit në shfletues, përveç nëse 201 ose a 3xx kodi i statusit është vendosur tashmë.

    Zëvendësoni

    Parametri opsional i zëvendësimit tregon nëse titulli duhet të zëvendësojë një titull të ngjashëm të mëparshëm ose të shtojë një titull të dytë të të njëjtit lloj. Si parazgjedhje do të zëvendësohet, por nëse kaloni në FALSE si argumenti i dytë, mund të detyroni shumë tituj të të njëjtit lloj. Për shembull:

    Http_kodi_përgjigje

    Detyron kodin e përgjigjes HTTP në vlerën e specifikuar. Vini re se ky parametër ka efekt vetëm nëse titulli nuk është bosh.

    Vlerat e Kthimit

    Asnjë vlerë nuk kthehet.

    Ndryshim Përshkrimi i versionit
    5.1.2 Ky funksion tani parandalon dërgimin e më shumë se një titulli në të njëjtën kohë si mbrojtje kundër sulmeve të injektimit të kokës.
    Shembuj

    Shembulli #1 Dialogu i shkarkimit

    Nëse dëshironi që përdoruesit t'i kërkohet të ruajë të dhënat që po dërgoni, si p.sh. një skedar PDF të krijuar, mund të përdorni kokën » Content-Disposition për të dhënë një emër skedari të rekomanduar dhe për të detyruar shfletuesin të shfaqë dialogun e ruajtjes.



  • 
    Top