Nopea navigointi tältä sivulta:
Jos päätät kirjoittaa käsikirjoituksen ja tehdä PHP uudelleenohjaus, tämän vaiheen edut ovat ilmeiset: PHP - palvelinpuoli kielisuuntautunut käsikirjoitukset; uudelleenohjaus suoritetaan palvelimella olevan komentosarjan kautta, ei vierailijoiden selaimessa. Jotkut uudelleenohjaukset voidaan suorittaa asiakaspuolella - js-uudelleenohjauksen (eli JavaScript-uudelleenohjauksen) kautta.
Tämä on joustavampi ja monipuolisempi lähestymistapa, ja voit suorittaa useita erilaisia uudelleenohjauksia PHP:ssä, toisin kuin muissa menetelmissä. Tässä on eniten yleisiä tyyppejä uudelleenohjaukset, jotka voidaan tehdä PHP:ssä: a) 301 PHP-uudelleenohjaus (pysyvä uudelleenohjaustila), b) 302 PHP-uudelleenohjaus (väliaikainen uudelleenohjaustila), c) Päivitys.
Tämä artikkeli on hyödyllinen ennen kaikkea aloitteleville verkkovastaaville, jotka etsivät tapoja toteuttaa URL-uudelleenohjaukset jos tämä ei ole mahdollista muilla yleisillä ratkaisuilla, kuten Htaccess.
PHP-funktion kielen otsikko
Oletetaan esimerkiksi, että haluat uudelleenohjata tähän URL-osoitteeseen http://www.jokuverkkosivusto.com/target.php. Alkuperäisessä PHP sivut Sinun pitäisi kutsua tätä uudelleenohjausskriptiä:
Kokeile myös tätä yksinkertaista kokeilua paikallisella isännöinnilläsi:
1) Avaa tekstieditori ja syötä tämä koodi:
Tallenna se nimellä targetpage.php.
2) Avaa toinen tyhjä tekstitiedosto ja syötä tämä koodi:
Tallenna se nimellä originatingpage.php.
3) Käynnistä nyt verkkoselain. SISÄÄN osoitekenttä kirjoita selaimeen: http://localhost/originatingpage.php
4) Huomaat, että Enter-painikkeen painamisen jälkeen tämä URL-osoite: http://localhost/originatingpage.php uudelleenohjaa osoitteeseen http://localhost/targetpage.php ja targetpage.php, ja näet sanat "Hei tämä on Codex" -x".
Yksi yleisimmistä virheistä saattaa olla suunnittelussa html-koodi uudelleenohjaus:
Kokeile tätä kokeilua:
Siirry originatingpage.php-skriptiin ja lisää mikä tahansa HTML-tunniste:
header('Sijainti: http://localhost/targetpage.php');
Oletetaan, että sinulla on tällainen koodi:
2) Tallenna tiedosto.
3) Suorita originating.php-skripti uudelleen sovelluksessa. Jos et näe virheitä, huomaat, että se uudelleenohjaa silti puhtaasti osoitteeseen targetpage.php
4) Yritä nyt muuttaa kohde-URL-osoite osoittamaan oikealle sivustolle, esimerkiksi:
5) Lataa originatingpage.php etäisännöintiin sivuston juurihakemistoon.
6) Suorita komentosarja selaimessa kutsumalla originatingpage.php URL-osoite, esimerkiksi: http://www.php-developer.org/originatingpage.php
7) Huomaat, että tällä kertaa kohtaat virheen:
Varoitus: Otsikkotietoja ei voi muokata - otsikot ovat jo lähettäneet (tulostus aloitettiin osoitteesta /home/phpdevel/public_html/originatingpage.php:6) tiedostossa /home/phpdevel/public_html/originatingpage.php rivillä 7
Mitä täällä tapahtuu? Syy ongelmaan on, että sinulla on jo HTML-kooditulostus ennen funktion otsikkoa.
Mitä hyötyä uudelleenohjauksesta on?
Uudelleenohjauksella voit ohjata käyttäjiä Web-sivulta toiselle. Lisäksi, jos esimerkiksi verkkosivustollasi artikkelilinkkien tekstit ovat rumaassa muodossa (joukko numeroita tai symboleja), niitä voidaan muuttaa käyttämällä translitterointia ja uudelleenohjaamalla näihin linkkeihin. Uudelleenohjausmahdollisuudet ovat käytännössä rajattomat! Tämän menetelmän hyödyt sivun indeksoinnin lisäämisessä, sivuston suorituskyvyn parantamisessa ja käyttäjien houkuttelemisessa ovat ilmeisiä.
(PHP 4, PHP 5, PHP 7)
header — Lähetä raaka HTTP-otsikko
Kuvaus
otsikko (merkkijono $otsikko [, bool $korvaa = TOTTA [, int $http_response_code ]]) : mitätön
otsikko() käytetään lähettämään raaka HTTP-otsikko. Katso » HTTP/1.1-spesifikaatiosta lisätietoja HTTP-otsikoista.
Muista se otsikko() täytyy kutsua ennen varsinaisen tulosteen lähettämistä joko tavallisilla HTML-tageilla, tiedoston tyhjillä riveillä tai PHP:stä. Se on hyvin yleinen virhe koodin lukemisessa sisältää, tai vaatia, funktioita tai muita tiedostojen käyttötoimintoja, ja niissä on välilyöntejä tai tyhjiä rivejä, jotka tulostetaan ennen otsikko() kutsutaan.
Sama ongelma esiintyy käytettäessä yhtä PHP/HTML-tiedostoa.
/* Tämä antaa virheen. Huomioi tulos
* yllä, joka on ennen header()-kutsua */
header();
?>
poistua;
Parametrit
Otsikkomerkkijono. On olemassa kaksi erikoistapauksen otsikkokutsua. Ensimmäinen on otsikko, joka alkaa merkkijonolla " HTTP/ " (koolla ei ole merkitystä), jota käytetään lähetettävän HTTP-tilakoodin selvittämiseen. Jos esimerkiksi olet määrittänyt Apachen käyttämään PHP-komentosarjaa puuttuvien tiedostojen pyyntöjen käsittelemiseen (käyttäen ErrorDocument
direktiivi), saatat haluta varmistaa, että komentosarjasi luo oikean tilakoodin.
?>
header("HTTP/1.0 404 ei löydy"); Toinen erikoistapaus on "Location:"-otsikko. Se ei ainoastaan lähetä tätä otsikkoa takaisin selaimeen, vaan se myös palauttaa a OHJAUS 201 (302) tilakoodi selaimeen, ellei tai a tilakoodi on jo asetettu.
otsikko ( "Sijainti: http://www.example.com/"); /* Ohjaa selain */
/* Varmista, että alla olevaa koodia ei suoriteta uudelleenohjauksen yhteydessä. */
header();
?>
Korvata
Valinnainen korvaa-parametri osoittaa, tuleeko otsikon korvata edellinen samanlainen otsikko vai lisätäkö toinen samantyyppinen otsikko. Oletuksena se korvaa, mutta jos ohitat VÄÄRÄ toisena argumenttina voit pakottaa useita samantyyppisiä otsikoita. Esimerkiksi:
header("WWW-Authenticate: Neuvotella");
header ("WWW-Authenticate: NTLM" , false );
?>
Http_response_code
Pakottaa HTTP-vastauskoodin määritettyyn arvoon. Huomaa, että tämä parametri vaikuttaa vain, jos otsikko ei ole tyhjä.
Palautusarvot
Arvoa ei palauteta.
Muutosloki
Versio | Kuvaus |
---|---|
5.1.2 | Tämä toiminto estää nyt useamman kuin yhden otsikon lähettämisen kerralla suojana otsikon lisäyshyökkäyksiä vastaan. |
Esimerkkejä
Esimerkki #1 Lataa-valintaikkuna
Jos haluat, että käyttäjää kehotetaan tallentamaan lähettämäsi tiedot, kuten luotu PDF-tiedosto, voit käyttää » Content-Disposition -otsikkoa antaaksesi suositellun tiedostonimen ja pakottaa selaimen näyttämään tallennusikkunan.
// Tulostamme PDF-tiedoston
otsikko ( "Sisältötyyppi: sovellus/pdf");
// Sen nimi on downloaded.pdf
otsikko ( "Sisältö: liite; tiedostonimi="ladat.pdf"");
// PDF-lähde on alkuperäisessä.pdf:ssä
lukutiedosto("alkuperäinen.pdf");
?>
Esimerkki #2 Välimuistin käskyt
PHP-komentosarjat luovat usein dynaamista sisältöä, jota asiakasselain tai mikään välityspalvelin ei saa tallentaa välimuistiin palvelimen ja asiakasselaimen välillä. Monet välityspalvelimet ja asiakkaat voidaan pakottaa poistamaan välimuisti käytöstä seuraavilla tavoilla:
otsikko ( "Cache-Control: ei välimuistia, täytyy vahvistaa uudelleen"); // HTTP/1.1
otsikko ( "Vanhenee: la, 26. heinäkuuta 1997 05:00:00 GMT"); // Päivämäärä menneisyydessä
?>
Saatat huomata, että sivujasi ei ole tallennettu välimuistiin, vaikka et tulosta kaikkia yllä olevia otsikoita. Käyttäjät voivat asettaa selaimelle useita vaihtoehtoja, jotka muuttavat sen oletusarvoista välimuistia. Lähettämällä yllä olevat otsikot sinun tulee ohittaa kaikki asetukset, jotka voivat muutoin aiheuttaa komentosarjasi tulosteen tallentamisen välimuistiin.
"HTTP 1.1 -määritysten vanhentunut versio (IETF RFC 2616) vaati täydellisen absoluuttisen URI:n uudelleenohjausta varten. IETF HTTP-työryhmä havaitsi, että suosituimmat verkkoselaimet sietävät suhteellisen URL-osoitteen välittämistä, ja tämän seurauksena päivitetyt HTTP 1.1 -spesifikaatiot (IETF RFC 7231) lievensivät alkuperäistä rajoitusta sallien suhteellisten URL-osoitteiden käytön Location-otsikoissa."
Ratkaisu: älä lähetä näitä otsikoita.
Huomaa myös, että IE-versiot 5, 6, 7 ja 8 kaksoispakkaavat jo pakatut tiedostot eivätkä käännä prosessia oikein, joten ZIP-tiedostot ja vastaavat vaurioituvat latauksen aikana.
Ratkaisu: poista pakkaus (tekstin/html:n lisäksi) käytöstä näissä IE:n versioissa esimerkiksi Apachen "BrowserMatch"-direktiivin avulla. Seuraava esimerkki poistaa pakkauksen käytöstä kaikissa IE:n versioissa:
BrowserMatch ".*MSIE.*" gzip-only-text/html
4. Suhteelliset URI:t EIVÄT ole sallittuja
väärin: Sijainti: /jotain.php?a=1
väärin: Sijainti: ?a=1Se tekee välityspalvelimesta ja http-asiakkaista onnellisempia.
15 vuotta sitten
Jos et ole käyttänyt, HTTP-vastaus 204 voi olla erittäin kätevä. 204 käskee palvelinta lopettamaan tämän pyynnön välittömästi. Tästä on hyötyä, jos haluat javascriptin (tai vastaavan) asiakaspuolen toiminnon suorittavan palvelinpuolen toiminnon ilman päivitystä tai nykyisen verkkosivun vaihtaminen. Sopii mainiosti tietokannan päivittämiseen, globaalien muuttujien asettamiseen jne.
Header("tila: 204"); (tai toinen puhelu)
header("HTTP/1.0 204 Ei vastausta");15 vuotta sitten
Kutsu session_write_close():lle ennen käskyä
header("Sijainti: URL");
exit();
?>
on suositeltavaa, jos haluat varmistaa, että istunto päivitetään ennen uudelleenohjausta.Kohtasimme tilanteen, jossa uudelleenohjauksen käyttämä komentosarja ei lataa istuntoa oikein, koska edeltävällä komentosarjalla ei ollut aikaa päivittää sitä (käytimme tietokannan käsittelijää).
9 kuukautta sitten
// Varo, että välilyönnin lisääminen avainsanan "sijainti" ja kaksoispisteen väliin aiheuttaa sisäisen palvelinvirheen
//Tämä rivi aiheuttaa virheen
7
header("Sijainti: index.php&controller=tuote&action=index");// Vaikka Se on kirjoitettava ilman välilyöntiä
header("Sijainti: index.php&controller=tuote&action=index");1 vuosi sitten
Otsikkokutsu voi olla harhaanjohtava aloitteleville php-käyttäjille.
kun "header call" on ilmoitettu, se viittaa tiedoston vasemman yläkulmaan, ei itse "header()"-funktioon.
"10 vuotta sitten
Tässä on php-skripti, jonka kirjoitin suoratoistamaan tiedostoa ja salaamaan se xor-operaatiolla tavuilla ja avaimella:
Salaus toimii erittäin hyvin, mutta nopeus on laskenut 2, nyt se on 520KiB/s. Käyttäjältä pyydetään nyt md5-salasanaa (sen sijaan, että se säilytettäisiin koodissa suoraan). Osa on ranskaa, koska se on äidinkieleni, joten muokkaa sitä haluamallasi tavalla.
// Suoratoista tiedostoja ja salaa tiedot lennossa
//Asetukset
// -- Suoratoistotiedosto
$tiedosto = "FILE_out" ;
// -- Lukupuskuri
$puskurin pituus = 3840 ;
// -- Näppäile hex
//$keychar = "9cdfb439c7876e703e307864c9167a15";// Toiminto: Muunna merkkijonon heksa-avain binääriksi
funktio hex2bin ($h ) (
if (! on_merkkijono ($h )) palauttaa null ;
$r = array();
for ($a = 0 ; ($a * 2 )< strlen ($h ); $a ++) {
$ta = heksadesi ($h [ 2 * $a ]);
$tb = heksadec ($h [(2 * $a + 1 )]);
$r [ $a ] = (int) (($ta<< 4 ) + $tb );
}
palauttaa $r ;
}// Toiminto lähettää todennusotsikot
function askPassword ($text = "Anna salasana") (
otsikko ( "WWW-Authenticate: Basic Realm="". utf8_decode($teksti). """ );
header("HTTP/1.0 401 Luvaton");
paluu 1;
}// Avainta kysytään ensimmäisessä käynnistyksessä
if (!isset($_SERVER [ "PHP_AUTH_PW" ])) (
askPassword();
kaiku "Une clé est nécessaire!
" ;
poistua;
}
// Hae avain hex-muodossa
$keychar = $_SERVER [ "PHP_AUTH_PW" ];// Muunna avain ja aseta avaimen koko
$avain = hex2bin ($keychar );
$avaimen pituus = count($avain);
// Teste si la clé est valide en hex
if ($avain == "" || $avaimen pituus<= 4 ) {
askPassword("Clé väärin!");
//echo "Clé incorrecte!
";
exit();
}
// Teste si la clé est de longueur d"une puissance de 2
if (($avaimen pituus % 2 ) != 0 ) (
kysyPassword ( "Clé de longueur incorrecte (useita 2 yksilöintiä)");
//echo "Clé de longueur incorrecte (puissance de 2 uniquement)
";
exit();
}//Otsikot
otsikko ( "Sisältötyyppi: sovellus/oktettivirta; ");
otsikko ( "Sisällönsiirto-koodaus: binääri");
header("Sisällön pituus: " . tiedostokoko($tiedosto) . "; " );
header("tiedostonimi=\"" . $tiedosto . "\"; " );
flush(); // tällä ei ole väliä.// Tiedoston avaaminen vain luku -tilassa
$fp = fopen($tiedosto, "r");
while (! feof ($fp ))
{
// Lue tiedoston puskurin koko
$puskuri = fread ($fp, $puskurin pituus);
$j = 0;
for ($i = 0 ; $i< $bufferlength ; $i ++) {
// Avain luetaan silmukassa koko tiedoston salaamiseksi
if ($i % $avaimenpituus == 0 ) (
$j = 0;
}
// Käytä xor-toimintoa avaimen ja salattavan tiedoston välillä
// Tämä toiminto kuluttaa paljon CPU-aikaa (Striimaa 1 MiB/s palvelimellani; Intel E2180)
$tmp = pakkaus("C", $avain[$j]);
$puskuriE = ($puskuri [ $i ]^ $tmp ); //<==== Le fameux XOR/*
kaiku"
avain[".$j."]: ";
var_dump($tmp);
kaiku"
puskuri[".$i."]: ";
var_dump($puskuri[$i]);
kaiku"
puskuriE: ";
var_dump($puskuriE);
kaiku"
";
//*/// Lähetä salatut tiedot
12:06 - Kuinka ohjata käyttäjä toiselle sivulle?
echo $puskuriE ;
// Puhdista muisti
$puskuriE = "" ;
$j++;
}
$puskuri = "" ;
flush(); // tämä on välttämätöntä suurille latauksille
/*
fclose($fp);
exit();
//*/
}
// Sulje tiedosto ja se on valmis
fclose($fp);Ratkaisuja on useita:
1) javascript
2) HTML
3) php
4) .htaccess
1) Tässä on esimerkki javascriptin koodista:Kirjoita =="text/javascript">
Sinun tarvitsee vain luoda index.htm-tiedosto (tai index.html tai index.php - YKSI niistä! tämä on tärkeää) ja lisätä koodi siihen sen jälkeen, kun http://www.omasivusto.com/ on korvattu sivustosi osoite.
Voit määrittää polun kansioon tai suoraan tiedostoon, esimerkiksi http://www.mysite.com/cat/file.phpKäyttäjän selain ohjataan välittömästi* määrittämällesi sivulle.
*jos selain tukee uudelleenohjausta. Nyt lähes kaikki selaimet tukevat uudelleenohjausta, ellei selain ole käyttäjän taitavasti konfiguroinut =)Jos haluat näyttää käyttäjälle viestin ennen uudelleenohjausta, käytä komentosarjan toista versiota:
type="text/javascript">
Sinut nyt liikutetaan!
%Jos selaimesi ei tue uudelleenohjausta, napsauta tätä: %TÄSSÄ
http://somesite2.com/ -- korvaa sivustosi osoitteella.
2) Jos haluat ohjata käyttäjän selaimen uudelleen HTML:n avulla, käytä META-tunnistetta:
http://www.blahblahblahsite.com/ -- korvaa sivustosi osoitteella
10 - tarkoittaa, että selain ohjataan uudelleen 10 sekunnin kuluttua.
Aseta arvoksi 0 välitöntä uudelleenohjausta varten.
Jos asetat aikakatkaisun, voit jättää tiedostoon viestin käyttäjälle, esimerkiksi:
10 sekunnissa sinut kuljetetaan!
Jos selaimesi ei tue uudelleenohjausta, napsauta tätä: %TÄSSÄ
3) Välitön uudelleenohjaus PHP:llä:
http://omasivusto.fi/kansio/ -- korvaa sivustosi tai sivusi osoitteella.
Koodi tulee sijoittaa tiedostoon, jonka pääte on .php, esimerkiksi index.php4) Välitön uudelleenohjaus .htaccessin avulla:
Kuten kaikilla ohjelmilla, myös web-palvelimella on tietyt asetukset. Sinulla Apache-käyttäjänä ei kuitenkaan välttämättä ole oikeuksia muuttaa Apachen asetuksia sen päätiedostojen kautta, mikä koskee kaikkia tämän palvelimen käyttäjiä. Voit kuitenkin muuttaa joitain määritystiedostoja, jotka koskevat vain sivustoasi. Yksi näistä tiedostoista on .htaccess
Tämä on joustava määritystiedosto Apache-verkkopalvelimelle. "Joustava" tarkoittaa, että heti kun muutat jotain tässä tiedostossa, muutokset astuvat voimaan välittömästi. Itse asiassa .htaccess-tiedostojen tarkoitus on tarjota keino määrittää Apache käyttäjille, jotka eivät voi muuttaa päämääritystiedostoa httpd.conf (tämä tiedosto on Apache-palvelimen pääasetustiedosto ja sen toiminnot koskevat täysin kaikkia tietty kopio Apachesta).
Tämä tiedosto ei ole Web-käyttäjän käytettävissä selaimella. Jos .htaccess-tiedosto sijaitsee palvelimen juurihakemistossa, sen toiminnot koskevat koko palvelinta, paitsi ne kansiot, joissa sijaitsee toinen .htaccess-tiedosto (ja lukuun ottamatta kaikkia kansioita tämän kansion "alapuolella", jossa on toinen . htaccess).
.htaccess-tiedoston määritykset voivat auttaa sinua monissa tilanteissa, mutta pieninkin syntaksivirhe (kuten tarvittavan tilan puuttuminen) voi saada sivustosi sisällön näkyviin virheellisesti tai ei ollenkaan. Koska .htaccess on piilotettu järjestelmätiedosto, varmista, että FTP-asiakasohjelmasi on määritetty näyttämään piilotetut tiedostot.
Luo tyhjä tekstitiedosto tekstieditorilla, kuten Muistiolla, ja tallenna se htaccess.txt-tiedostona. Syy, miksi tiedosto on tallennettava htaccess.txt-tiedostona, on se, että monet käyttöjärjestelmät ja FTP-sovellukset eivät voi lukea .htaccess-tiedostoja oletuksena. Palvelimelle lataamisen jälkeen voit nimetä tiedoston uudelleen muotoon .htaccess.
Ohjaa koko sivusto mihin tahansa muuhun verkkotunnukseen (esimerkiksi example.net ohjataan osoitteeseen example.com).
Kuka tahansa voi lähettää. Mutta oikea uudelleenohjaus on koko taidetta. Mutta käyttäjien ohjaaminen oikealle tielle Internetissä on vielä vaikeampaa. Uudelleenohjaus php:lle sopii tähän parhaiten.
Millainen uudelleenohjaus?
Verkko-ohjelmoinnissa syntyy tilanteita, joissa joudut ohjaamaan linkin jälkeen käyttäjä toiseen osoitteeseen. Tietenkin ensi silmäyksellä tällaisen uudelleenohjauksen toteuttaminen näyttää hieman "laittomalta". Käytännössä tällainen uudelleenohjaus ei ole vain hyökkääjien, vaan myös rehellisten verkkovastaavien keskuudessa:
Missä tapauksissa uudelleenohjaus voidaan vaatia:
- Kun sivustomoottori vaihdetaan, koko resurssin arkkitehtuuri muuttuu seurauksena. Sitten syntyy ongelma, kuinka uudelleenohjaus tehdään;
- Kun resurssin rakenne piirretään uudelleen, kokonaisia osia tai yhtä materiaalia lisätään, poistetaan tai siirretään. Kun tämä prosessi on käynnissä, on tilapäisesti mahdollista ohjata käyttäjä haluttuun osioon;
- Jos sivusto on äskettäin vaihtanut verkkotunnusta, vanha näkyy verkkotunnuksen vaihtamisen jälkeen vielä jonkin aikaa hakutuloksissa. Tässä tapauksessa hakukone ohjaa käyttäjän uuteen verkkotunnukseen automaattisesti.
- Valtuutusprosessin aikana suurella verkkosivustolla on yleensä kaksi käyttäjäryhmää: tavalliset vierailijat ja resurssien ylläpitäjät. Tässä tapauksessa on järkevää toteuttaa uudelleenohjaus jokaiselle käyttäjälle hänen oikeuksiensa ja roolinsa mukaisesti. Valtuutuksen jälkeen sivuston ylläpitäjä tai moderaattorit siirtyvät resurssin hallintaosaan ja vierailijat resurssin käyttäjäosaan.
Uudelleenohjauksen ominaisuudet php:hen
Toisin kuin muilla kielillä, PHP:llä on joitain etuja uudelleenohjausten toteuttamisessa:
- Php on palvelinpuolen ohjelmointikieli. Siksi uudelleenohjaus ei tapahdu selaimessa näytettävien sivujen html-koodissa, vaan palvelimella olevassa komentosarjassa;
- Uudelleenohjauksen php:hen voidaan toteuttaa useilla tavoilla. Mikä laajentaa huomattavasti sen soveltamista;
- Palvelimella tapahtuvan tietojen käsittelyn vuoksi PHP:llä toteutettu uudelleenohjaus on vähemmän herkkä hakukoneiden suodattimien vaikutuksille.
Uudelleenohjaukseen PHP:ssä käytetään header()-funktiota. Sitä käytetään http-otsikon lähettämiseen. Sen syntaksi on:
void header (merkkijono $string [, bool $korvaa = true [, int $http_response_code ]])
Funktion hyväksymät argumentit:
- merkkijono $string– otsikkorivi;
Tätä väitettä on kahdenlaisia. Ensimmäinen on yhteyden tilakoodin lähettämistä varten. Se alkaa "HTTP/". Toinen tyyppi lähettää tilakoodin (REDIRECT 302) asiakasselaimeen otsikon mukana. Tämä argumentti alkaa sanoilla "Location:"
- bool $replace on bool-tyypin valinnainen attribuutti. Vastaa edellisen otsikon ohittamisesta. Jos arvoksi asetetaan tosi , edellinen tai samantyyppiset otsikot korvataan. Jos argumentin arvoksi on asetettu false , otsikkoa ei kirjoiteta uudelleen. Oletuksena tämä arvo on tosi;
- http_response_code – argumentti pakottaa HTTP-vastauskoodin. Koodin asennus onnistuu, jos merkkijonoargumentti ei ole tyhjä.
HTTP-tilakoodi on osa palvelimen vastauksen yläriviä. Koodi koostuu kolmesta numerosta, joita seuraa englanninkielinen selittävä teksti. Ensimmäinen numero vastaa tilaluokasta. Uudelleenohjaus vastaa koodeja 300 - 307. Niiden täydellinen kuvaus löytyy vastaavasta teknisestä dokumentaatiosta.
Käytettäessä header()-funktiota ulkoisten linkkien uudelleenohjaukseen, sen kutsun sijainti on erittäin tärkeä. Koodissa sen tulisi sijaita kaikkien html-tunnisteiden yläpuolella:
Käytä header()-uudelleenohjausta
Toiminnon toimivuuden osoittamiseksi paikallisella palvelimella sinun on luotava kaksi tiedostoa. Kutsutaan toinen niistä nimellä redirect.php ja toista redirect2.php . Ensimmäisen sisällä asetamme funktiokutsun seuraavassa muodossa:
Toiseen tiedostoon laitamme rivin:
echo "Hei! Olet redirect2.php-tiedostossa";
Muutama käytännöllinen esimerkki uudelleenohjauksen käyttämisestä php:hen:
- Pakota http-tilakoodi välitettäväksi, kun käytät header()-funktion ensimmäistä argumenttia, kuten " sijainti"Oletusarvoisesti tilakoodi lähetetään otsikkoon" 302 » ( väliaikaisesti muutettu). Tästä voi tulla ongelma siirrettäessä resurssia toiseen verkkotunnukseen. Hakukoneissa tällainen väliaikainen uudelleenohjaus voi kestää kauemmin. Loppujen lopuksi hakukone analysoi jatkuvasti tilakoodia. Ja se sanoo " väliaikaisesti muutettu" Esimerkki tilakoodin pakotetusta uudelleenkirjoituksesta " 302 " päällä " 301 » ( pysyvästi muutettu):
Uudelleenkirjoitus on myös mahdollista kahdessa vaiheessa. Ensimmäinen rivi kirjoittaa tilakoodin uudelleen ja toinen uudelleenohjaa uuteen osoitteeseen:
- Ulkoisten linkkien uudelleenohjauksen käyttäminen uudelleenohjaukseen käyttäjän roolin mukaan. Rooli määräytyy todennusprosessin aikana. Käsiteltävä arvo kirjoitetaan $who-muuttujaan:
- Yksinkertaistettu käytännön esimerkki ulkoisen linkin uudelleenohjauksen toteuttamisesta - linkin napsauttaminen johtaa php-sivulle. Tästä käyttäjä siirtyy Rambleriin 5 sekunnissa. HTML-koodi:
Paina minua
Redirect3.php tiedostokoodi:
No, tässä olemme oppimassa uudelleenohjauksen perusteita PHP:ssä. Nyt voit turvallisesti ottaa vastuun käyttäjien uudelleenohjaamisesta oikeaan suuntaan. Tärkeintä ei ole tehdä virhettä suunnassa, muuten johdat kaikki käyttäjäsi jonkun muun sivustolle...