PHP ārējo saišu novirzīšana. Pāradresēt ar aizkavi un atpakaļskaitīšanas taimeri. Slēpt novirzīšanas saites. Kā iestatīt novirzīšanu uz citu URL PHP pirms lapas ielādes

Katrs interneta lietotājs ir saskāries ar novirzīšanu (aka “novirzīšana”). Vienkārši atlasiet jebkuru vietni no meklēšanas rezultātiem meklētājprogrammā, un meklētājprogramma automātiski novirzīs jūs uz vietni. Šajā rakstā mēs runāsim par to, kādi novirzīšanas veidi pastāv un kā tos iestatīt.

Pamata regulāro izteiksmju operatori

Vispirms apskatīsim pamata regulāro izteiksmju operatorus (karodziņus, modifikatorus, speciālās rakstzīmes):

Īpašās rakstzīmes:

  • ^ — kreisā robeža (rindas sākums);
  • $ — ierobežojums pa labi (rindas beigas);
  • . - jebkurš simbols;
  • () - mainīgs;
  • \ — aizbēgšana (rakstzīme pēc \ tiek uzskatīta par parastu rakstzīmi, nevis speciālo rakstzīmi);
  • — vērtību diapazons;
  • ! - īpašs negācijas raksturs.

Modifikatori:

  • ? — simbols atkārtojas 0 vai 1 reizi;
  • + — 1 vai vairākas rakstzīmes (līdz 65536);
  • * - 0 vai vairāk rakstzīmju (līdz 65536).
Kā iestatīt 301 htaccess novirzīšanu

Sāksim ar 301 novirzīšanu pakalpojumā htaccess. Pirmkārt, tā ir automātiska novirzīšana no vienas adreses uz citu. To var labi izmantot gadījumā, ja vietne tiek pārsūtīta no http protokola uz https, kad vietne tiek pārkonfigurēta no “pilna izmēra” adresēm uz CNC (t.i., tā bija https://www.karcher.xyz/content /news/31-01 -2017/razdatka, kļuva par https://www.karcher.xyz/ razdatka), kā arī dublēto lapu “līmēšanai”. Otrkārt, 301. novirzīšana meklētājprogrammām norāda, ka “puiši, jūsu adrese vairs nedarbojas, tāpēc dodieties uz turieni”, un viņi saka: “Labi, mēs to ņemsim vērā”. Tādējādi novirzīšana notiek nesāpīgi, nezaudējot pozīcijas un saišu masu.

Bet kas notiek, ja “Ak, kas pie velna? Ja es apgrūtināšos ar novirzīšanu, es vienkārši tērēšu laiku!”? To var izdarīt, BET... “vecās” lapas vēsture tiks zaudēta, un “jaunā” tiks sarindota “no nulles”. Rezultātā tiek zaudētas pozīcijas un saišu masa (labākajā gadījumā).

301. novirzīšanas izmantošanas iespējas:

  • Domēnu apvienošana;
  • Vietnes pārvietošana uz citu adresi (var būt noderīga, ja vietne ir pakļauta kādiem filtriem);
  • Lai palielinātu TCI, PR rādītājus un palielinātu trafiku, iegādājoties citu domēnu (iestatiet novirzīšanu uz resursu, kuram jāpalielina TCI un PR);
  • Mainot vietnes dzinēju (šajā gadījumā ir stingri jāiestata 301 novirzīšana, pretējā gadījumā tiek garantēts pilnīgs trafika zudums);
  • pārejot no http uz https;
  • līmēšana "ņem"

utt., visus iemeslus nevar uzskaitīt.

301 Novirzīt, mainot galvenās vietnes domēnu

Tātad, jūs esat nolēmis mainīt savu domēnu. Mēs nekavējoties piedāvājam gatavu risinājumu:

  • robots.txt pārstrādāšana vecajā domēnā. Pabeigtā faila teksts:

Lietotāja aģents: Yandex

Saimnieks: newsite.com

  • iestatiet 301 novirzīšanu visām vietnes lapām (izņemot failu robots.txt), izmantojot tālāk norādīto kodu:

RewriteCond %(REQUEST_FILENAME) robots.txt$

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

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

301 novirzīšana, mainot lapas adresi

Lapas novirzīšana (kad mainās lapas adrese) tiek veikta, izmantojot tālāk norādīto kodu:

RewriteEngine ieslēgts

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

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

Šis kods tiek izmantots, “pārvietojot” lapas, piemēram, uz CNC.

Htaccess programmā iestatiet novirzīšanu no www uz domēnu bez www

Piemini www. domēnā adrese jau sen nav aktuāla. Tomēr vietnes ar www. pabeigt. Domēnu apvienošana no www. un bez ir jādara stingri obligātā kārtībā, jo meklētājprogrammas uztver šos 2 domēnus kā 2 dažādas vietnes ar atšķirīgu TCI, PR, trafiku, saišu masu un visu pārējo. Tāpēc viens no tiem ir oriģināls, bet otrs ir “krāpnieks” ar “zagtu saturu”. Lai tas nenotiktu - domēni ar www. un bez tā ir nepieciešams “salīmēt kopā”, izmantojot 301 novirzīšanu. Iestatīšanas kods ir norādīts zemāk.

Pārvirzīšanas kods no www uz ne-www programmā htaccess izskatās šādi:

RewriteEngine ieslēgts
RewriteCond %(HTTP_HOST) ^www.site.ru$

Tagad sapratīsim direktīvas.

RewriteEngine ieslēgšana/izslēgšana — vienkāršā cilvēku valodā — tas kalpo kā slēdzis 301 novirzīšanai.

RewriteCond — šī direktīva nosaka nosacījumus nākamās direktīvas “iedarbināšanai”.

RewriteRule ir direktīva vienas adreses pārvēršanai citā.

Iestatiet 301 novirzīšanu no http uz https, izmantojot htaccess

Daudzi uzskata, ka pāreja no http uz https ir “moderna tendence”. Tomēr šodien šis pasākums ir obligāts (lai gan formāli tas tāds nav). Un tagad ir pienākusi stunda, kad saņēmāt SSL sertifikātu, jūsu vietne jau darbojas gan http, gan https. Viss, kas jākonfigurē .htaccess failā, ir 301 novirzīšana no vietnes lapu http uz https versijām. Konfigurācijas kods ir norādīts zemāk.

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

Un šeit ir kods apgrieztai novirzīšanai no https uz http. Kā redzat, atšķirība ir tikai 1 rakstzīme:

RewriteCond %(SERVER_PORT) !^443$

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

Novirzīt no lapām index.php, index.html

Lielākoties mēs runāsim par dublikātu salīmēšanu, kuru var būt ļoti daudz.

Tā kā apakšvirsrakstā ir minēti index.php un index.html, jūs jau uzminējāt, ka ar 301 novirzīšanu mēs atbrīvosimies no galvenās lapas dublikātiem:

Tomēr, ja galvenajai lapai ir dublikāts formā site.ru/index.php, iespējams, ka arī pārējām lapām ir dublikāti formā site.ru/index.php/page.html (ar sākotnējās adreses vietni .ru/page.html). Tas ir slikti, tāpēc ir jāiestata arī 301. novirzīšana, izmantojot tālāk norādīto kodu:

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

Nav nekas neparasts, ka galvenajai lapai ir dublēts skats

site.ru/main.html, kam ir jāreģistrē arī 301 novirzīšana uz site.ru:

RewriteEngine ieslēgts

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

Vai arī alternatīva:

Novirzīt 301 /main.html HYPERSAITE "http://site.ru/" http:// vietne. ru/

Tagad apsveriet pretējo situāciju - kad vēlaties sapludināt dublikātus, iestatot novirzīšanu no site.ru uz site.ru/main.html. To var izdarīt, izmantojot tālāk norādīto kodu.

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

RewriteRule .* %1.html

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

Nu, ja jums ir svarīgi, lai visu iekšējo lapu adreses tiktu parādītas bez .html beigās, tad novirzīšana tiek konfigurēta ar šādu kodu:

RewriteCond %(REQUEST_URI) \.html$

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

Tagad parunāsim par to, kā veikt novirzīšanu no lapas uz lapu, proti, no.htm uz pages.html. Lai iestatītu šādu novirzīšanu, vienkārši pievienojiet šo kodu .htaccess:

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

Novirza no adresēm ar un bez slīpsvītrām beigās

Vispirms apskatīsim cita veida dublētās lapas — tādas lapas kā http://site.xyz/page un http://site.xyz/page/, izņemot slīpsvītru beigās, tās neatšķiras. Varat konfigurēt novirzīšanu no pirmās uz otro un no otrās uz pirmo. Apsvērsim abas iespējas:

Novirzīt no http://site.xyz/page uz http://site.xyz/page/:

RewriteCond %(REQUEST_FILENAME) !-f

RewriteCond %(REQUEST_URI) !\..+$

RewriteCond %(REQUEST_URI) !/$

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

Novirzīt no http://site.xyz/page/ uz http://site.xyz/page:

RewriteCond %(REQUEST_FILENAME) !-d

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

Pārrakstīšanas kārtula ^(.+)/$/$1

Turklāt nav nozīmes tam, vai adreses beigās pēc pāradresācijas ir slīpsvītra vai nē. Galvenais ir tas, ka šīs adreses ir salīmētas kopā, izmantojot 301 novirzīšanu.

Pārvirzīt uz vietnes mobilo versiju

Protams, ja jūsu vietne darbojas ar WordPress vai Joomla dzinēju, varat iestatīt novirzīšanu uz vietnes mobilo versiju, izmantojot spraudņus.

Tomēr Google ir atsaucīga dizaina atbalstītājs. Tāpēc mobilajai versijai nav nepieciešams piešķirt atsevišķu domēnu/apakšdomēnu. Tie. Google apgalvo, ka "ja ir iespējams iztikt bez novirzīšanas uz mobilo versiju, tas ir tieši tas, kas jums jādara."

Bet ko darīt, ja joprojām nevarat iztikt bez šādām novirzīšanas?

Varat konfigurēt novirzīšanu, izmantojot .htaccess failu

RewriteEngine ieslēgts

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

RewriteCond %(REQUEST_URI) ^/$

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

Mobilās novirzīšanas iestatīšana, izmantojot PHP

Jāizmanto speciālā Mobile Detect bibliotēka, kas nepieciešama, lai atpazītu, vai lietotājs nācis no mobilās vai stacionāras ierīces.

$detect = jauns Mobile_Detect;

if ($detect->isMobile()) (//code)

if ($detect->isTablet()) (//code)

if ($detect->isiOS()) (// kods)

if ($detect->isAndroidOS()) (// kods)

No šī koda kļūst acīmredzams, ka ir iespējams atpazīt ne tikai datoru/viedtālruni/planšetdatoru, bet arī tā operētājsistēmu.

JavaScript novirzīšana

Tālāk norādītais kods novirza uz mobilo apakšdomēnu. Pāradresācijas pamatā ir ekrāna izšķirtspēja - līdz 480 pikseļiem platumā. Tas ir platumā, nevis augstumā.

  • if (screen.width ieslēgts

    2. metode. Novirzīšanas uz vietni site.com iestatīšana, izmantojot .htaccess, ievietojot šo kodu:

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

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

    Tādā pašā veidā (proti, otrajā) varat iestatīt novirzīšanu no vecās kategorijas adresēm uz jaunām. Pēc noklusējuma saišu adreses OpenCart izskatās apmēram šādi:

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

    Ir ļoti sāpīgi skatīties uz šādām saitēm, un tiešā nozīmē, jo... Man tiešām sāk sāpēt acis, ieraugot šādas adreses. Tajā pašā .htaccess varat konfigurēt novirzīšanu uz “cilvēka” adresēm, piemēram, site.com/category, izmantojot šādu kodu:

    RewriteCond %(QUERY_STRING) ^path=83_94_113&route=product/category$

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

    Bet ko darīt ar dinamiskām adresēm, kuras, tā kā tās ir piesaistītas noteiktai sadaļai, izskatās kā site.com/katalog?c=okna-pvkh?

    Programmētāji jau labu laiku ir meklējuši risinājumu. Pēc nejaušības principa (precīzāk, izmēģinājumu un kļūdu) risinājums tika atrasts. Šajā gadījumā notiek novirzīšana uz vietnes galveno lapu:

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

    RewriteRule katalogs http://site.com/?

    Piezīmes un kļūdas

    Tagad parunāsim par to, kā izvairīties no kļūdām, iestatot 301. novirzīšanu:

    • Pārsūtīšanas noteikumu secību nedrīkst pārkāpt. Pēc novirzīšanas iestatīšanas jums jāpārliecinās, ka iestatījums neradīja nekādas “blakusparādības”. Ja pārkāpjat kārtulu secību, iepriekš konfigurētās novirzīšanas var pārstāt darboties vai darboties nepareizi. Noteikumos nevajadzētu būt pretrunām.
    • Jūtieties brīvi izmantot oficiālās rokasgrāmatas, jo... Sarežģītās sintakses dēļ 301 novirzīšanai ir daudz funkciju. Iestatīšanas laikā ir viegli palaist garām dažas nianses.
    • Pēc nākamās “apdares” VIENMĒR veiciet pilnu iepriekš ieviesto noteikumu funkcionalitātes pārbaudi. Iestatīšana bez pārbaudes nav iestatīšana pat “rādīšanai”. Viena papildu rakstzīme var izraisīt visas vietnes avāriju vai likt tai darboties nepareizi. Sekojot citiem programmētājiem, ne reizi vien ir nācies labot vietnes darbību, kad notiek 301 novirzīšana no adreses site.com/oldpage uz site.com/newpage, un tad, izmantojot to pašu 301 novirzīšanu, notiek novirzīšana. atpakaļ uz vietni site.com/oldpage un tālāk "kārta".

    Noslēgumā mēs sniegsim dažus piemērus, kad jūs vispār nevarat izmantot 301 novirzīšanu.

    Pirmkārt, “vairāku caurlaide”, ja ir vairākas 301 pārvirzīšanas pēc kārtas. Daudz pareizāk ir iestatīt novirzīšanu tieši uz “pabeigšanas” adresi.

    Otrkārt, ja kāda iemesla dēļ ir 2 lapas ar dublētu saturu, bet jums ir jāsaglabā abas lietotājiem.

    Treškārt, novirza “uz nepareizo vietu”. Tie. ja lapa ir pārvietota no pirmās adreses uz otro, un, iestatot novirzīšanu, jūs kļūdaini norādāt pavisam citas lapas adresi.

    Ceturtkārt, novirzīt uz lapu, kas kaut kādu iemeslu dēļ darbojas ļoti nepareizi. Lapai ir jādarbojas stabili un jāatgriež kods 200 vai kods 404.

    Piektkārt, novirziet failu robots.txt. To aizliedz daudzu meklētājprogrammu noteikumi. Turklāt daudzi cilvēki pieļauj to pašu kļūdu – konfigurējot htaccess novirzīšanu uz https no http://site.xyz/robots.txt uz https://site.xyz/robots.txt. Failam robots.txt ir jābūt pieejamam abās adresēs bez novirzīšanas. Tieši tas pats attiecas uz xml vietnes karti.

    Ātra navigācija šajā lapā:

    Ja jūs nolemjat rakstīt skriptu un novirzīt PHP, šī soļa priekšrocības ir acīmredzamas: PHP ir uz serveri orientēta skriptu valoda; novirzīšana tiks veikta, izmantojot skriptu serverī, nevis apmeklētāju pārlūkprogrammā. Dažas novirzīšanas var veikt klienta pusē — izmantojot js novirzīšanu (tas ir, izmantojot JavaScript novirzīšanu).

    Šī ir elastīgāka un daudzpusīgāka pieeja, un atšķirībā no citām metodēm PHP varat veikt vairāku veidu novirzīšanu. Šeit ir visizplatītākie novirzīšanas veidi, ko var veikt PHP: a) 301 PHP novirzīšana (pastāvīgā novirzīšanas statuss), b) 302 PHP novirzīšana (pagaidu novirzīšanas statuss), c) atjaunināšana.

    Šis raksts galvenokārt būs noderīgs iesācējiem tīmekļa pārziņiem, kuri meklē veidus, kā ieviest URL novirzīšanu, ja tas nav iespējams, izmantojot citus izplatītus risinājumus, piemēram, Htaccess.

    PHP funkcijas valodas galvene

    Piemēram, pieņemsim, ka vēlaties novirzīt uz šo URL http://www.somewebsite.com/target.php. Lapas avota PHP jums vienkārši jāizsauc šis novirzīšanas skripts:

    Izmēģiniet arī šo vienkāršo eksperimentu savā vietējā mitināšanā:

    1) Atveriet teksta redaktoru un ievadiet šo kodu:

    Saglabājiet to kā targetpage.php.

    2) Atveriet citu tukšu teksta failu un ievadiet šo kodu:

    Saglabājiet to kā originatingpage.php.

    3) Tagad palaidiet savu tīmekļa pārlūkprogrammu. Pārlūkprogrammas adreses joslā ievadiet: http://localhost/originatingpage.php

    4) Jūs ievērosiet, ka pēc ievadīšanas pogas nospiešanas šis URL: http://localhost/originatingpage.php novirza uz http://localhost/targetpage.php un targetpage.php, un jūs redzat vārdus "Sveiki, tas ir. kodekss" -x".

    Viena no visbiežāk pieļautajām kļūdām var būt paslēpta html novirzīšanas koda dizainā:

    Izmēģiniet šo eksperimentu:

    Dodieties uz skriptu originatingpage.php un pievienojiet jebkuru HTML tagu:

    header('Atrašanās vieta: http://localhost/targetpage.php');

    Pieņemsim, ka jums ir šāds kods:

    Šī ir novirzīšanas kļūda

  • 
    Tops