Howlite ucp php presmerovanie. Ako sa presmerujem na inú adresu URL v PHP pred načítaním stránky? Viac príkladov htaccess

Pomerne dôležitý bod pri nastavovaní stránky. Nesprávne nakonfigurované presmerovanie môže vážne poškodiť výsledky vyhľadávania na stránke. Najčastejšie situácie, v ktorých musíte použiť trvalé presmerovanie 301:

  • Zmena adresy stránky- kúpili ste si doménu a rozhodli ste sa prejsť z lokality site.example.com na lokalitu site.ru
  • Zlučovanie zrkadiel – ak sú vaše stránky dostupné na stránkach www.site.ru a site.ru, vyhľadávače to môžu počítať ako dve rôzne stránky, takže najprv sa musíte rozhodnúť pre hlavné zrkadlo (s www alebo bez www) a nastaviť presmerovania do hlavného zrkadla...
  • Keď stránka (jedna alebo viacero) zmenila svoju adresu- v určitom okamihu sa ukázalo, že adresy http://example.com/index.php?option=com_content&task=view&id=23&Itemid=1 nie sú dobré a je potrebné ich previesť na http://example.com/sport/novinky12, no je škoda stratiť pozície v indexe vyhľadávačov (keďže to bude pre nich nový článok).
  • Ďalší spôsob, ako sa vysporiadať s duplicitnými stránkami

Dôležité: ak sa stránka presunie dočasne, použite 302 Presunuté dočasne. V tomto prípade sa stránky nezlúčia a stránku s presmerovaním je možné kedykoľvek obnoviť.

Trvalé presmerovanie 301 pre Apache (.htaccess)

Pravidlá musíte vložiť hneď za riadky:

RewriteEngine On RewriteBase / # na skrátenie celej cesty od koreňového adresára servera po koreňový adresár lokality

samotné pravidlá sú nastavené pomocou regulárnych výrazov, pripomeňte si syntax:

  • Metaznaky na špecifikovanie skupín znakov alebo „štítkov“ v šablóne:
    • ^ - označenie začiatku riadku,
    • $ - značka konca riadku,
    • ! - negácia,
    • \ - úniková lomka, umožňuje považovať nasledujúci metaznak za obyčajný znak,
    • ... - bod, označuje akýkoľvek znak, ale iba jeden,
    • () - zoskupenie.
  • Modifikátory sa umiestňujú za bežné znaky, metaznaky alebo ich skupiny:
    • ? - znak sa opakuje 0 alebo 1 krát,
    • * - opakuje sa od 0 do 65536 krát,
    • + - sa opakuje od 1 do 65536 krát.
  • Príznaky definujú ďalšie možnosti pre toto pravidlo:
    • NC - (nocase) zakáže kontrolu prípadu.
    • R - (redirect) zastaví proces konverzie a vráti výsledok do prehliadača klienta ako presmerovanie na danú stránku (302, MOVED TEMPORARY).
      Pomocou tohto príznaku môžete zadať iný kód výsledku, napríklad R = 301 vráti presmerovanie s kódom 301 (PREHNUTÉ NATRVALO). Ako si viete predstaviť, presne toto potrebujeme.
    • L - (posledný) zastaví proces konverzie a aktuálny odkaz sa považuje za konečný.

Zvážte najbežnejšie situácie:

RewriteCond% (HTTP_HOST) ^ www \. (. *) RewriteRule ^ (. *) $ Http: //% 1 / $ 1 RewriteCond označuje podmienku, ktorá, ak sa zhoduje, vykoná RewriteRule.

Presmerujte z index.php (html) na hlavnú stránku

RewriteCond% (THE_REQUEST) ^ (3.9) \ / index \. (Php | html | htm) \ HTTP / RewriteRule ^ (. *) Index \. (Php | html | htm) $ $ 1

Presmerovanie pri zmene štruktúry webu

RewriteRule ^ príspevok / kategória /(.*)$ blog / kategória / 1 $ RewriteRule ^ príspevok /(.*)$ blog / príspevok / 1 $

Trvalé presmerovanie 301 v PHP

Ak chcete informovať prehliadač, že z požadovanej stránky musíte presmerovať na adresu http://site.ru, spustite príkazy:

Hlavička ("HTTP / 1.1 301 trvalo presunuté"); hlavička ("Umiestnenie: http://site.ru"); východ ();

Trvalé presmerovanie 301 pre nginx

Pravidlá presmerovania sú popísané v sekcii server.

Presmerujte z www.site.ru na site.ru

server (počúvať 80; názov_servera www.site.ru; prepísať ^ http: //site.ru$request_uri? trvalé;)

alebo všeobecné pravidlo pre všetky stránky:

Server (názov_servera ~ ^ (?! www \.); Prepísať ^ http: //www.$host$request_uri trvalé;)

Presmerovanie pre z site.ru na www.site.ru

server (počúvať 80; názov_servera site.ru; prepísať ^ http: //www.site.ru$request_uri? trvalé;)

Presmerujte z index.php na hlavnú stránku

umiestnenie = /index.php (if ($ request_uri = /index.php) (prepísať ^ http: // $ hostiteľ? trvalé; # 301 presmerovanie) fastcgi_pass unix: /tmp/fastcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; vrátane fastcgi_params;)
UCP Anti-Cheat- bezplatný program proti podvádzaniu klient-server na ochranu servera pred bezohľadnými hráčmi.

»Teraz budú údaje zo servera UCP odoslané na stránku v sekcii „Monitor“.
"Pridaný nový cvar ucp_monitor
»HL1. Vylepšený systém ochrany proti podvádzaniu
»HL2. Vylepšená podpora pre najnovšiu verziu CSS
»HL2. Podpora modu Deathmatch
»HL2. Automatické nahradenie súboru binkw32.dll

možnosti:

„Ochrana pred zmenami a zámenou herných súborov
„Ochrana pred zavádzaním a zmenami herného postupu
„Ochrana pred použitím cheatov na skripty
„Systém zákazov jedinečného identifikátora PC
»Poloautomatická inštalácia na strane klienta
„Podpora pre steam a non-steam verzie hier
„Schopnosť robiť screenshoty od hráčov
„Režim ladenia na rýchlu identifikáciu problémov

Podporované hry:

"Polovičný život
»Podmienka nula
»Counter-Strike 1.6
»Deň porážky
»Adrenalínový hráč
»Tímová pevnosť Classic
»Zdroj Counter-Strike
»MU Online
»Ragnarok Online

Inštalácia na strane klienta:

1. Spustite inštalačný program, vyberte jazyk, ktorému rozumiete, a kliknite na tlačidlo „Ďalej“
2. Súhlaste s podmienkami licencie a kliknite na tlačidlo "Ďalej"
3. Kliknite na „Prehľadávať“ a vyberte súbor hl.exe, potom kliknite na „Otvoriť“
4. Vyberte typ hry a nezabudnite pridať kľúč - para ak máte steam verziu hry alebo patch 33 alebo vyšší (ide o zostavenie 4156, číslo zostavy zistíte tak, že napíšete príkaz do hernej konzoly verzia )


Kľúčové hodnoty:

- para- potrebné pre steam verziu hry alebo ak je patch 33 alebo vyšší
- noforcemparms- používa nastavenia tlačidla myši zo systému Windows
-noforcemaccel- používa nastavenia zrýchlenia myši zo systému Windows
-noforcemspd- používa nastavenia rýchlosti myši zo systému Windows
- frekv- nastaví určenú frekvenciu monitora pri spustení hry (neužitočné pre LCD)
-w- šírka rozlíšenia monitora (napríklad -š 800 -v 600 nastaví 800x600)

Ak ste nezrušili začiarknutie "Vytvoriť adresár so skratkami na ploche" , po inštalácii sa na vašej ploche zobrazí adresár Ultra Core Protector s nasledujúcim obsahom:

ucp.log- hlavný súbor s chybovými kódmi a informáciami o konfigurácii počítača.

ucp.ini- súbor nastavení pre spustenie hry.


Priorita = 2- prioritný režim pre herný proces:
nízka - 1
stredná - 2
vysoká - 3
v reálnom čase - 4
podpriemerné - 5
nadpriemerný - 6

Hra = Counter-Strike- typ hry (Half-Life, Counter-Strike, Condition-Zero, Day of Defeat, Team Fortress, Counter-Strike Source)

Jazyk = 1- jazyk, v ktorom sa budú chyby zobrazovať (0 - angličtina, 1 - ruština)

Parametre = -nojoy -nomaster -nointro - parametre spustenia hry, aby bolo možné nastaviť parametre spustenia hry, musia byť špecifikované vo vlastnosti skratky "Desktop \ Ultra Core Protector \ Counter-Strike" .

ucp.dbg- súbor, do ktorého sa uložia informácie pri spustení anti-cheatu v režime ladenia.

Režim ladenia- ladiaci režim anti-cheat prevádzky na identifikáciu problémov.

Counter-Strike- odteraz na spustenie hry s anti-cheatom použite túto skratku.

Ak chcete nainštalovať na licencované verzie hier, musíte zadať adresár "steam \ steamapps \\ counter-strike \", a pred spustením anti-cheatu musíte najskôr spustiť steam.

Inštalácia pre HL1:

„Aby anti-cheat fungoval, server musí mať nainštalovanú najnovšiu verziu AMX Mod X
»Kopírovať ucp.amxx do adresára doplnky / amxmodx / pluginy /
"V addons / amxmodx / configs / plugins.ini pridať riadok ucp.amxx
»Kopírovať ucp.cmd do koreňového adresára herného modu, kde je liblist.gam
»Kopírovať banlist.txt, config.cfg, cvarlist.txt, detectlist.txt a filelist.txt do adresára addons / amxmodx / configs / ucp /
»Kopírovať ucp.txt do adresára addons / amxmodx / data / lang /
"Ak máte na svojom serveri nainštalovaný modul dproto nižšej verzie ako 0.4.8, potom pre kompatibilitu s anti-cheatom potrebujete v jeho konfigurácii dproto.cfg nájsť reťazec ValidInfoFields_Engine a pridajte na koniec riadku \ * ucp_id

Inštalácia pre HL2:

„Aby anti-cheat fungoval, server musí mať nainštalovanú najnovšiu verziu
»Kopírovať ucp.smx do adresára doplnky / sourcemod / pluginy /
»Kopírovať ucp.cmd do koreňového adresára herného modu, kde gameinfo.txt
»Kopírovať banlist.txt, config.cfg, cvarlist.txt, detectlist.txt a filelist.txt do adresára cfg / ucp /
»Kopírovať ucp.phrases.txt do adresára doplnky / sourcemod / preklady /

Poznámka:

» Aby mohli klienti služby steam vstúpiť na server, potrebujete vypnúť VAC, na to musíte pridať kľúč - neistý na štartovaciu čiaru servera.
"Ak chcete automaticky nainštalovať a spustiť anti-cheat pre hráčov, ktorí vstúpia bez anti-cheatu, musíte pridať riadok
Inštalácia v hlavnom motd.txt strane servera. Keď hráč klikne na odkaz Inštalácia, hra sa vyloží a spustí cez anti-cheat. Mali by ste tiež upozorniť hráčov, že ak chcete spustiť hru s anti-cheatom, musíte hru spustiť zo súboru ucp.exe z koreňového adresára hry.

Účel súborov:

config.cfg- anti-cheat konfiguračný súbor.
banlist.txt- identifikátory zakázaných používateľov.
ucp.cmd- pôvodný súbor aktuálnej klientskej časti, slúži na identifikáciu a automatickú aktualizáciu.
filelist.txt- zoznam súborov na kontrolu so súbormi na serveri. Nie viac ako 100 riadkov.
cvarlist.txt- zoznam cvarov, ktorých hodnoty sú nastavené násilne. Nie viac ako 50 riadkov. (predvolený zoznam cvar pre Counter-Strike). (Len pre HL1)
ucp.txt- správy servera v rôznych jazykoch pre HL1.
ucp.phrases.txt- správy servera v rôznych jazykoch pre HL2.
detectlist.txt- zoznam nežiaducich softvérových podpisov na strane klienta. Nie viac ako 50 riadkov. Syntax:

Typ vyhľadávania:

[P]- vyhľadávanie podľa názvu procesu
[W]- vyhľadávanie podľa triedy okien
[D]- vyhľadávanie podľa mena vodiča

Akcie:

[M]- zobraziť správu
[K]- vyložiť proces
[B]- bsod

Príklad:

[W] [K] vírusový
[W] [B] ollydbg
[D] [M] ntice.sys Potrebujete zatvoriť SoftIce a reštartovať počítač

príkazy:

ucp_ban - zákazy na lokálnom serveri hráča prostredníctvom jedinečného identifikátora počítača. Ak čas zákazu nie je špecifikovaný, alebo je zadaná 0, potom bude zakázaný navždy.

ucp_banid - zakáže lokálny server zadaným identifikátorom. Ak čas zákazu nie je špecifikovaný, alebo je zadaná 0, potom bude zakázaný navždy.

ucp_unban - odstráni zákaz na lokálnom serveri zadaným identifikátorom.

ucp_banlist- zobrazuje tabuľku zakázaných identifikátorov.

ucp_banlist_file - cesta k súboru, kde sú uložené identifikátory zakázaných používateľov (štandardne "0").

ucp_version- zobrazuje aktuálnu verziu anti-cheatu.

ucp_who- zobrazuje zoznam hráčov na serveri.

ucp_screen - urobí snímku obrazovky z prehrávača a odošle ju na server vo formáte jpg pomocou zvoleného protokolu. Druhý parameter je potrebný iba v režime HTTP na zobrazenie snímky obrazovky bez opustenia hry.

ucp_autoscreen - urobí snímku obrazovky z prehrávača v určenom časovom intervale (za sekundu). Minimálna frekvencia musí byť aspoň 60 sekúnd (predvolené "0").

ucp_mode - povoliť / zakázať anti-cheat plugin bez reštartovania servera (predvolené "1").

0 - doplnok je zakázaný
1 - súčasťou dodávky

ucp_checkfile_mode - povoliť / zakázať kontrolu súborov z filelist.txt (štandardne "1").

0 - možnosť vypnutá
1 - možnosť je povolená, keď sa nájdu neoriginálne súbory, vymaže ich a hodí nový
2 - možnosť je povolená, keď sa nájdu neoriginálne súbory, stiahne hru so správou, že je potrebné hru preinštalovať

ucp_upload_mode - protokol, pomocou ktorého sa budú snímky obrazovky odosielať na server (štandardne „FTP“).

FTP - Protokol prenosu súborov
HTTP - HyperText Transfer Protocol
LOCAL - prenos snímok obrazovky na lokálny server (musí byť nainštalovaný doplnok UCP Screen Uploader)

ucp_upload_host - HOST alebo IP adresa servera, kam sa budú odosielať snímky obrazovky (bez www, http: // a ftp: //), ak je http alebo ftp server na rovnakom serveri ako samotná hra a server má internú a externú adresu, potom je lepšie namiesto adresy nastaviť znamienko „+“, v tomto prípade snímky obrazovky od externých hráčov budú odoslané na adresu externého servera a z interného na interný.

ucp_upload_port - PORT servera.

ucp_upload_user - prihlásenie pre identifikáciu na FTP server.

ucp_upload_pass - heslo pre autentifikáciu na FTP serveri.

ucp_upload_path - adresár alebo skript php, do ktorého sa budú odovzdávať snímky obrazovky.

ucp_build - číslo alebo čísla zostavy, z ktorých je povolený vstup na server (štandardne "0", tj možnosť je vypnutá). Môžete zadať jednu zostavu „4156“ aj niekoľko „3779; 3939; 3248; 3266“. Anti-cheat rozpoznáva nasledujúce zostavy:

2834, 3147, 3210, 3248, 3266, 3329, 3382, 3647, 3779, 3939, 4156, 4381, 4554
3048, 3152, 3264, 3224, 3698, 3945, 4044, 4248

ucp_cpurl - možnosť zobraziť váš banner v poli Hosting obsahu poskytuje: pri pripojení k serveru (štandardne "0", tj možnosť je vypnutá). Musíte vytvoriť html súbor, napríklad cs.html, napísať tam nasledujúci kód:





kde cs.jpg je váš banner s rozmermi 340x56. Potom nahrajte súbory cs.html, cs.jpg na svoj http server a zadajte ich tu http: // vaša adresa / cs.html

ucp_detect_mode - zapnutie/vypnutie skenovania nechceného softvéru na strane prehrávača (predvolené "1").

0 - kontrola je vypnutá
1 - kontrola je povolená

ucp_detect_time - interval v sekundách pre skenovanie nežiaduceho softvéru od začiatku prihlásenia prehrávača (štandardne "0", tj skenuje sa len pri prihlásení na server).

ucp_link - odkaz na anti-cheat, ktorý sa zobrazí pri kope správy.

ucp_redirect_mode - zapnutie / vypnutie funkcie presmerovania hráčov, ktorí vstúpili bez anti-cheatu (v predvolenom nastavení "0", tj funkcia je vypnutá).

0 - presmerovanie je zakázané
1 - presmerovanie je povolené

ucp_redirect_wan - externá adresa servera, kde budú hráči bez anti-cheatu presmerovaní z internetu.

ucp_redirect_lan - lokálna adresa servera, kde budú hráči bez anti-cheatu presmerovaní zvnútra siete.
socket_hz.

»Upload Screens - jednoduchý php skript pre príjem screenshotov na http server.

»ATAC + UCP - integrovaný plug-in" kontrola útokov hráčov na ich tím "za potrestanie jedinečným identifikátorom UCP.

6,1 tis

Povedzme, že chcete používateľov, ktorí navštívia stránku https://example.com/initial.php zobrazila sa stránka https://example.com/final.php. To je možné vykonať pomocou niekoľkých metód PHP, JavaScript a HTML. V tomto článku vás prevedieme každou z metód, ktoré možno použiť na presmerovanie PHP na inú stránku.

Tu sú niektoré z premenných, ktoré budeme používať:

Použitie funkcie hlavičky PHP () na presmerovanie adresy URL

Ak chcete pridať presmerovanie z initial.php na final.php, môžete na webovú stránku initial.php vložiť nasledujúci kód. Do prehliadača odošle novú hlavičku umiestnenia:

Tu používame funkciu hlavičky PHP () na vytvorenie presmerovania. Tento kód musíte vložiť pred akýkoľvek HTML alebo text. V opačnom prípade sa zobrazí chyba, že hlavička už bola odoslaná. Môžete tiež použiť ukladanie do vyrovnávacej pamäte na zabránenie tejto chybe odosielania hlavičky. Nasledujúci príklad ukazuje túto metódu presmerovania PHP v akcii:

Ak chcete vykonať presmerovanie pomocou funkcie header (), funkcia ob_start () musí byť prvá v skripte PHP. Predídete tak chybám hlavičky.

Ako dodatočné opatrenie môžete pridať kocku () alebo exit () hneď po presmerovaní hlavičky, aby ste zabránili spusteniu zvyšku kódu webovej stránky. V niektorých prípadoch vyhľadávacie roboty alebo prehliadače nemusia venovať pozornosť označeniu v hlavičke Location. Čo je plné potenciálnych hrozieb pre bezpečnosť stránky:

Na objasnenie: zomrieť () alebo ukončiť () nemá nič spoločné s presmerovaniami. Používajú sa na zabránenie spusteniu zvyšku kódu na webovej stránke.

Keď používate PHP presmerovania na stránku, odporúča sa, aby ste pri zadávaní hodnoty hlavičky Location používali absolútne adresy URL. Ale budú fungovať aj relatívne adresy URL. Túto funkciu môžete použiť aj na presmerovanie používateľov na externé lokality alebo webové stránky.

Výstup kódu presmerovania JavaScript pomocou funkcie PHP echo ().

Toto nie je čisté PHP riešenie. Je však aj účinný. Môžete použiť funkciu PHP echo () na výstup kódu JavaScript, ktorý sa postará o presmerovanie.

Ak použijete toto riešenie, nemusíte používať vyrovnávaciu pamäť výstupu. To tiež zabraňuje chybám súvisiacim s odosielaním hlavičiek.

Nižšie je uvedených niekoľko príkladov, ktoré používajú rôzne metódy JavaScriptu na presmerovanie z aktuálnej stránky na inú:

self.location="https://example.com/final.php";"; echo""; echo""; echo""; ?>

Jedinou nevýhodou tohto spôsobu presmerovania na inú stránku PHP je, že JavaScript beží na strane klienta. A vaši návštevníci môžu mať zakázaný JavaScript.

Používanie metaznačiek HTML na presmerovania

Na vykonanie presmerovania môžete použiť aj základné HTML. Možno to znie neprofesionálne, ale funguje to. A nemusíte sa obávať, že v prehliadači je vypnutý JavaScript alebo že sa predtým odoslala chyba hlavičky:

Môžete tiež použiť posledný riadok z predchádzajúceho príkladu na automatické obnovenie stránky každých " n„Sekundy. Napríklad nasledujúci kód automaticky obnoví stránku každých 8 sekúnd.

Dobrý deň, priatelia. Dnes by som chcel rozobrať veľmi otrepanú, no vždy aktuálnu tému - ide o 301 Redirect (Permanent Redirect 301) - na seo párty a bez formalít, to je to, čo sa myslí pod slovom "presmerovanie". Technicky ide o odpoveď servera na volanie, táto odpoveď má kód 301, čo znamená, že adresa hovoru bola natrvalo presunutá. V dôsledku všetkých týchto prefíkaných podvodov musíme získať nejakú novú konečnú adresu.

Verím, že tieto technické aspekty nepotrebujete, a preto chcem hovoriť o aplikovaných veciach - kedy a v akých situáciách je lepšie použiť presmerovanie, ako a akými príkazmi môžete nastaviť pravidlá presmerovania atď. A zvážime aj nástroje a služby, pomocou ktorých môžete skontrolovať správnosť presmerovaní.

Keďže príspevok bol veľmi veľký, rozhodol som sa tak urobiť obsah pre vaše pohodlie:

Keď POTREBUJETE vykonať presmerovanie 301

V prvom rade sa presmerovanie použije, keď stránka (skupina stránok alebo celá sekcia) zmení svoju adresu- najčastejšie sa to stane, keď zmeníte štruktúru stránky, premenujete základnú časť url alebo zmeníte princíp generovania adries (inými slovami CNC). Žiaľ, nie každý na to myslí, keď na stránke niečo zmení a v dôsledku toho vzniká veľa duplikátov, čo vedie k strate pozícií či dokonca k sankciám zo strany vyhľadávačov. Pri svojej práci sa veľmi často stretávam s takýmito situáciami a všetko napraviť a neutralizovať následky stojí veľa nervov. Za seba môžem odporučiť, pred akoukoľvek prácou na zmene typu CNC alebo prepracovaní štruktúry, vypracovať plán aktuálnej štruktúry stránky, všetkých jej sekcií a príkladov finálnych stránok. Toto všetko bude potrebné po dokončení práce skontrolovať, aby sme sa po prechode na starú adresu dostali na novú a server poslal presmerovanie s kódom 301 (nie 302).

Ďalším bežným použitím presmerovaní 301 je zmena adresy lokality alebo lepenie zrkadiel. Ak sa rozhodnete zmeniť adresu stránky v súvislosti s rebrandingom spoločnosti alebo ste si zaregistrovali novú, krajšiu a kratšiu doménu, aby ste ju uviedli na tlačených reklamných produktoch, je veľmi dôležité, aby používateľ pri prístupe na adresu na starej doméne sa dostane na rovnakú stránku (a nie na domovskú stránku), ale na novú doménu. Čo sa týka promo stránok, zvyčajne pozostávajú z jednej alebo dvoch stránok, z ktorých odkazy vedú na hlavnú stránku, alebo keď prejdete na promo stránku, ste okamžite presmerovaní na špeciálnu stránku hlavnej stránky. Niekedy sa pri vytváraní stránky zaregistruje niekoľko domén naraz, napríklad z dôvodu nejednoznačného písania názvu spoločnosti v latinčine. Aby sa používateľ intuitívnym zadaním adresy dostal na správne miesto a bolo zaregistrovaných niekoľko domén - je veľmi dôležité, aby zo všetkých „pomocných“ domén prebehlo 301 presmerovaní na jednu hlavnú adresu. V žiadnom prípade by ste nemali dovoliť, aby bola rovnaká stránka dostupná na všetkých adresách.

A viac o zrkadlách – môže sa stať, že vaša stránka bude dostupná na adresách http://www.site.ru, http://site.ru a https://site.ru(to druhé je zriedkavé, ale stáva sa) - to všetko sú klasické chyby, ktoré by sa nemali robiť a na ich riešení sa podieľa 301 presmerovaní. Rovnako ako v prípade rôznych adries stránok sa musíte rozhodnúť pre hlavné zrkadlo (s www alebo bez www) a nastaviť presmerovania na hlavné zrkadlo. Samozrejme, vyhľadávače nie sú hlúpe a v takýchto situáciách si často poradia sami a pomôcť im môžete aj správnym nastavením v paneloch správcu webu a v súbore robots.txt (pre Yandex smernica Host). Ale SEO je chúlostivá záležitosť a nespoliehal by som sa na šťastie, ale použil by som osvedčenú metódu!

Niekedy sa stáva veľmi nepríjemná situácia, keď je kópia stránky dostupná nielen vtedy, keď do panela s adresou zadáte názov domény, ale aj IP adresu servera. Táto situácia sa pravdepodobne nestane na zdieľanom hostingu, ale ak máte dedikovaný server, potom ľahko. To môže byť dôvod nesprávnej konfigurácie servera - zakázanie dostupnosti pri prístupe k IP-adrese pomôže vyriešiť problém, ale najlepšia vec tu pomôže presmerovanie 301 na úrovni webového servera (apache alebo nginx). Pred pár mesiacmi som mal presne takú situáciu - mal som dedikovaný server, na ktorom niektoré stránky viseli, ale pre jednu zo stránok som sa rozhodol použiť iný samostatný server. Premiestnil som stránku, všetko fungovalo ako hodinky a potom som jedného dňa narazil na klon mojej stránky vo výstupe Google - šok, panika - ukázalo sa, že toto je IP adresa môjho nového servera a samozrejme mojej stránky žije na ňom a keď kontaktujem server, odpovie mi 200 OK a Google ho úplne zaindexoval. Na predchádzajúcom serveri takýto problém nebol, pôvodne bolo nakonfigurované presmerovanie 301 z ip na doménu zadanú ako hlavnú ip. Teraz ma učí trpká skúsenosť a vždy si takéto veci overujte – buďte si vedomí, neopakujte chyby. Problém bol vyriešený pridaním presmerovania na hlavnú doménu do konfigurácií webového servera nginx 301, príklad kódu ukážem v praktickej časti príspevku nižšie.

Situácia je podobná predchádzajúcej - keď je kópia stránky umiestnená a dostupná prostredníctvom testovacej domény služby, napríklad site.hosting.ru. Aj takéto prípady sa v mojej praxi vyskytujú a na rozdiel od predchádzajúceho prípadu je to typické pre zdieľaný hosting. Prečo toto existuje? Napríklad ste si ešte nekúpili doménu alebo prenášate stránku z jedného hostingu na druhý a NS servery pre doménu neboli zmenené alebo DNS záznamy od poskytovateľa ešte neboli aktualizované. V takýchto situáciách sa robia testovacie adresy, kde si môžete všetko nakonfigurovať a nainštalovať pred presmerovaním adresy stránky na nový hosting. A niektorí hostitelia hrešia tým, že neblokujú prístup k takýmto technickým adresám a zároveň ani nezakazujú ich indexovanie. Ak máte túto nepríjemnú situáciu aj vy, potom by ste mali skúsiť zaregistrovať presmerovanie 301 z technickej adresy na hlavnú v súbore .htaccess.

A samozrejme, presmerovania 301 veľmi radi používajú správne SEO na riešenie rôznych duplicitných stránok. Prečo len tie správne SEO? Áno, pretože na stránku klienta vrazili nesprávneho vtáka a, čo je dosť pravdepodobné, bez toho, aby na stránku vôbec prešli, začali kupovať odkazy - bohužiaľ, nie je to nezvyčajné. Pravidelne ma kontaktujú zákazníci, ktorí chcú preveriť svedomitosť svojich dodávateľov/zamestnancov, ktorí sú zodpovední za optimalizáciu a propagáciu stránky, ako sa darí práci - - a zatiaľ sa nikdy nestalo, že by som nenašiel chyby alebo nedostatky na stránkach. Majte teda na pamäti – vždy vám rád pomôžem. Vráťme sa k duplikátom – myslím si, že namiesto blokovania duplikátov z indexovania sa treba presmerovať na hlavnú adresu a to už nie je také zaujímavé. Samozrejme, existuje veľa prípadov, keď sú duplikáty vynútené, a potom sa nemôžete obísť bez kanonizácie, ale ak existuje príležitosť na presmerovanie, určite to urobte. Časté prípady duplikátov, ktoré treba vždy kontrolovať: adresy s lomkou a bez lomky na konci, adresy s parametrami a menovkami - nižšie vám poviem, ako to vyriešiť.

Keď môžete vykonať presmerovanie 301

V tejto sekcii nie je veľa čo písať, ale pokúsim sa. Naozaj dúfam, že po prečítaní mi do komentárov pridáte pár nápadov.

Presmerovanie 301 možno použiť ako odpoveď servera namiesto chyby 404 Nenájdené- inými slovami, používateľ po kliknutí na nesprávny odkaz alebo na neexistujúcu stránku neuvidí správu, povie: „Prepáčte, taká stránka už neexistuje“, ale bude presunutý na inú existujúcu stránku . Toto je medzi odborníkmi veľmi kontroverzný bod, a preto nikomu nevnucujem svoj názor. Ale radšej používam presmerovanie namiesto chýb 404 a existuje niekoľko možností pre vývoj udalostí ... Pozrite sa, existujú 2 kategórie chýb 404: prvá je klasická, keď bola stránka skutočne vymazaná, druhá je, keď je chyba spojená s krivými externými odkazmi. V prvom prípade by ste pravdepodobne nemali robiť presmerovanie, ale ponechajte chybu 404 tak, ako je. Ale v druhom prípade by ste sa mali postarať o presmerovanie na správnu url-adresu, ak ju možno obnoviť z nefunkčného odkazu, alebo o presmerovanie na hlavnú stránku (alebo kategóriu).

Keď NESMIETE robiť presmerovanie 301

Niekoľko slov o tom, kedy vám presmerovanie môže uškodiť, a preto by sa nemalo používať v nasledujúcich situáciách.

A čo je najdôležitejšie, aby ste neurobili chyby, nemali by ste sa pohrávať s presmerovaniami, ak si nie ste 100% istí tým, čo robíte, alebo máte o niečom pochybnosti. Berte to ako priateľskú radu :)

Pre dočasné riešenia by sa nemali používať trvalé presmerovania, je to zrejmé už z názvu - na dočasný presun použite 302 Presunuté dočasne. V tomto prípade nebudú stránky zlepené a stránku s presmerovaním je možné kedykoľvek obnoviť.

Ak sa vyskytnú problémy s vašou doménou, napríklad filtre, zákaz atď., a rozhodnete sa zmeniť adresu stránky(doména), potom by ste nemali robiť presmerovanie 301 zo starej domény na novú - v dôsledku toho všetky problémy starej "nalepíte" na novú doménu. To znamená, že nakoniec sa nič nezmení. Áno, nejaký čas existovalo riešenie, ako sa dostať z filtra Penguin Google pomocou úplného presmerovania 301 zo starej domény na novú. Vskutku, všetky pozície boli obnovené na úroveň pred sankciami a vyzeralo to ako všeliek na zlého tučniaka, ale pri ďalšej aktualizácii algoritmu bola táto funkcia zohľadnená a nová doména tiež spadala pod filter, keďže výsledkom je, že po zmene domény sa nič nezlepšilo. Ak ste sa už rozhodli zmeniť doménu, môžete skúsiť preniesť všetok obsah na novú doménu a vymazať ho na starej a zavesiť útržok so správou o presune, alebo ešte lepšie začať všetko od škrabanec.

Existuje mnoho spôsobov, ako urobiť presmerovanie 301: cez htaccess, php, javascript, nastavenia servera atď. – takže nie je potrebné pokúšať sa použiť všetky metódy naraz, pravdepodobnosť „nezhôd“ medzi rôznymi metódami je príliš vysoká a môžete , napríklad získate nekonečné kruhové presmerovanie.

Keď pracujete so zložitou štruktúrou lokality alebo prerábate veľký portál, často dochádza k viacnásobným presmerovaniam alebo dlhým reťazcom. To znamená, že presmerovanie neprebieha v jednom kroku, ale v dvoch alebo viacerých – to je zlá situácia a treba sa jej vyhnúť vždy, keď je to možné. Pri kliknutí na takýto odkaz si vyhľadávací robot, ktorý dostal niekoľko presmerovaní za sebou, môže myslieť, že je oklamaný a prestane sledovať a prestane odkazy úplne počítať. Tu je príklad z mojej praxe, keď som raz dostal audit na stránke s takýmto neočakávaným reťazcom:

http://site.ru/tax/term/30 ->
http://www.site.ru/tax/term/30 ->
http://www.site.ru/tax/term/30/ ->
http://www.site.hosting.ru/404.php ->
http://www.site.ru/404.php

V dôsledku toho stránka http://www.site.ru/404.php, ktorá by mala poskytnúť chybu 404, poskytne odpoveď 200 OK. Dokonca mi to vyfučalo z hlavy, no predstavte si, čo by si pomyslel pátrací robot, keby sa dostal do takého kolotoča! Nielenže sa reťaze zúčastnili tri rôzne domény, ale aj chybová stránka hovorí, že nejde o chybu a treba ju indexovať.

Vždy, keď je to možné, snažte sa vyhnúť presmerovaniam na stránke.- ak externé odkazy na stránku už nemožno opraviť a presmerovanie je nevyhnutné, potom by sa mali opraviť interné odkazy. Možno to nebude mať vplyv na kvalitu indexovania a hodnotenia, no istotu si nemôžete byť istí, a preto je lepšie sa takýmto kontroverzným situáciám vyhýbať. Úžasný vám pomôže pri sledovaní interných presmerovaní a vo všeobecnosti chýb na stránke.

Pri zostavovaní pravidiel presmerovania v .htaccess vylúčte skutočné adresy adresárov a súborov na serveri a sledujte výber. Situácia pre stránku, ktorá mi raz prišla na audit - v boji proti duplikátom stránok kategórie s lomkou a bez lomky na konci to webmaster trochu prehnal a naopak problém len prehĺbil. Nielenže skutočné súbory js-scriptov a css-štýlov spadali pod pravidlá prepisovania, kvôli čomu prestali správne fungovať, ale niektoré stránky dostali na konci zbytočnú lomku a objavili sa duplikáty. Priatelia, uistite sa, že vypracované pravidlá platia len pre skupinu adries, s ktorou pracujete, a obmedzte všetky ostatné.

Ak chcete vyhľadať problémové stránky a ich adresy, ktorých sa musíte zbaviť, použite možnosti panelov správcu webu od spoločností Yandex a Google. Pre správcu webu Yandex: Vyberte lokalitu -> Indexovanie lokality -> Vylúčené stránky. Pre správcu webu Google: Vyberte stránku -> Optimalizácia -> Optimalizácia HTML; A tiež: Vyberte stránku -> Konfigurácia -> Parametre adresy URL.

Funkcie indexovania a opätovného indexovania presmerovaní v službách Yandex a Google. Keď bojujete s duplikátmi a problematickými adresami, samozrejme, budete čakať na odstránenie chýb z panelov správcu webu, sú tu určité zvláštnosti. S Google je všetko jednoduché – nastavíme presmerovania, zmeny sa zaindexujú do 2 týždňov, počas tejto doby začnú miznúť chyby z panela správcu webu, zvyčajne do mesiaca zmiznú všetky chyby. S Yandexom je tu jemnosť a je to nasledovné - po nastavení presmerovaní môžete navždy čakať, kým chyby z panela zmiznú, čakal som raz šesť mesiacov, kým som nenapísal na podporu, kde mi bolo povedané, že okrem presmerovanie, je potrebné dodatočne zavrieť problémové stránky v robots.txt a až potom zmiznú z panela správcu webu.

Trvalé presmerovanie 301 cez .htaccess

Tento spôsob nastavenia presmerovaní je najobľúbenejší a najjednoduchší. Aj keď musím priznať, že všetko nie je také jednoduché, ako sa zdá, preto plánujem napísať samostatný príspevok o htaccess. Z výhod tejto metódy možno poznamenať, že presmerovanie sa spúšťa na úrovni servera a pred začatím spracovania akýchkoľvek skriptov stránok a nenesie žiadne ďalšie zaťaženie.

Pravdepodobne už máte na svojom serveri súbor .htaccess (v koreňovom adresári, kde je hlavný index.php). Ak tento súbor nie je viditeľný:

  • Skontrolujte nastavenia ftp managera, ten vie skryť systémy a nie súbory, čo je súbor htaccess
  • Prejdite do správcu súborov cez ovládací panel hostiteľa a skontrolujte povolenia pre súbor. Nemyslím CHMOD, ale môže tam byť skupina a používateľ, napríklad root a pripojíte sa cez ftp pomocou prístupu používateľa vlastníka domény.
  • Súbor možno nie je otrepaný :) Potom by sa mal vytvoriť, ale niekedy nastáva problém pod oknami. súbor htaccess systém v skutočnosti vníma ako súbor bez mena a iba s príponou. Navrhujem jednoduchý spôsob - vytvorte obyčajný txt súbor, pridajte k nemu riadok "RewriteEngine On" (bez úvodzoviek), nahrajte txt súbor na server, premenujte súbor na .htaccess na serveri

Väčšina úprav súvisiacich s presmerovaním by mala byť napísaná na samom začiatku súboru za riadkom „RewriteEngine On“ aby sa tieto pravidlá spracovali ako prvé. Je dôležité dodržiavať postupnosť akcií, pretože príkazy spracováva server riadok po riadku od úplného začiatku až po prvý výskyt. Inými slovami, vždy treba začať súkromnou vzorkou a skončiť všeobecnejšou vzorkou.

Pozrime sa na niektoré z najbežnejších a najužitočnejších príkladov:

301 presmerovanie pre doménu z www.site.ru na site.ru

RewriteCond% (HTTP_HOST)! ^ Www \. (. *) RewriteRule ^ (. *) $ Http: //www.%1/$1

Vyššie uvedené možnosti presmerovania fungujú dobre a nevyžadujú z vašej strany žiadne úpravy – stačí ich vložiť do súboru .htaccess. Pre 100% spoľahlivosť by som vám však poradil inú možnosť:

RewriteCond% (HTTP_HOST)! ^ Www.site.ru $ RewriteRule ^ (. *) $ Http://www.site.ru/$1

RewriteCond% (HTTP_HOST)! ^ Www.site.ru $ RewriteRule ^ (. *) $ Http://www.site.ru/$1

RewriteCond% (HTTP_HOST)! ^ Site.ru $ RewriteRule ^ (. *) $ Http://site.ru/$1

RewriteCond% (HTTP_HOST)! ^ Site.ru $ RewriteRule ^ (. *) $ Http://site.ru/$1

Prvá je pre tých, ktorí majú hlavnú doménu s www, druhá - bez www. Preto v oboch príkladoch namiesto „site“ zadajte názov svojej domény.
Prečo sú teda tieto možnosti lepšie? Veľmi jednoducho kontrolujú nielen neprítomnosť / prítomnosť www v názve domény, ale skontrolujú aj úplnú zhodu názvu domény.
Živý príklad: Určite ste sa už stretli s tým, že stránka môže byť nečakane zaindexovaná servisnou adresou na hostingu (taká adresa sa vydáva preto, aby sa na stránku dalo pristupovať skôr, ako si naviažete svoju skutočnú doménu), nejakým zrkadlom alebo dokonca ip adresu! Univerzálne pravidlá teda overia len neprítomnosť / prítomnosť www, pričom nezáleží na tom, na ktorú doménu používateľ alebo vyhľadávací robot pristupuje.
Takže pri použití rozšírenej možnosti budete mať 146% istotu, že vaša stránka bude dostupná len a výlučne podľa názvu domény, ktorú ste osobne zadali, a s prihliadnutím na www. Používam iba túto možnosť a odporúčam vám ju!

301 presmerovanie z http na https

Vo svetle masívneho prechodu stránok na zabezpečený protokol musíte vedieť, ako presmerovať z http na https. Mimochodom, ak ste si ešte nevybrali certifikát SSL, mali by ste si prečítať môj príspevok o.

Nižšie vám ponúkam niekoľko možností pre presmerovanie 301 z protokolu http na https, ktoré môžu alebo nemusia fungovať v závislosti od konfigurácie vášho servera, ale niektoré pravidlá vám určite budú vyhovovať:

RewriteCond% (HTTPS)! = On RewriteRule ^ (. *) $ Https: //% (HTTP_HOST) / $ 1

RewriteCond% (HTTPS)! = On RewriteRule ^ (. *) $ Https: //% (HTTP_HOST) / $ 1

RewriteCond% (SERVER_PORT)! ^ 443 $ RewriteRule ^ (. *) $ Https: //% (SERVER_NAME)% (REQUEST_URI)

RewriteCond% (SERVER_PORT)! ^ 443 $ RewriteRule ^ (. *) $ Https: //% (SERVER_NAME)% (REQUEST_URI)

RewriteCond% (ENV: HTTPS)! Na RewriteRule ^ (. *) $ Https: //% (HTTP_HOST)% (REQUEST_URI)

RewriteCond% (ENV: HTTPS)! Na RewriteRule ^ (. *) $ Https: //% (HTTP_HOST)% (REQUEST_URI)

RewriteCond% (HTTP: X-HTTPS)! 1 RewriteRule ^ (. *) $ Https: //% (HTTP_HOST) / $ 1

RewriteCond% (HTTP: X-HTTPS)! 1 RewriteRule ^ (. *) $ Https: //% (HTTP_HOST) / $ 1

RewriteCond% (HTTPS) zľava RewriteCond% (HTTP: X-Forwarded-Proto)! Https RewriteRule ^ (. *) $ Https: //% (HTTP_HOST)% (REQUEST_URI)

Presmerujte z https na http (úprimne, neviem, prečo by ste to mohli potrebovať):

RewriteCond% (HTTPS) = na RewriteRule ^ (. *) $ Http: //% (HTTP_HOST) / $ 1

RewriteCond% (HTTPS) = na RewriteRule ^ (. *) $ Http: //% (HTTP_HOST) / $ 1

Nedávno som napísal veľmi podrobný návod. Ak plánujete prejsť z https na https, musíte si to prečítať!

Trochu objasním ten nezrozumiteľný blábol:

  • RewriteCond označuje podmienku, ktorá, ak sa zhoduje, vykoná RewriteRule. Regulárne výrazy sa používajú na špecifikáciu vzorov reťazcov.
  • Serverové premenné:
    • % (REQUEST_URI) - časť adresy URL bez názvu domény a parametrov GET, napríklad pre stránku, ktorú práve čítate: blog / príspevok / 4393,
    • % (HTTP_HOST) – názov hostiteľa alebo domény, napríklad: lokalita
    • % (QUERY_STRING) – reťazec so sadou parametrov GET, to znamená časť adresy URL za otáznikom (a pred kotvou hašovaním, ak existuje).
    • % (REQUEST_FILENAME) - úplná cesta v súborovom systéme servera k súboru alebo skriptu zodpovedajúcemu tejto požiadavke..php, ale v systéme súborov servera je to hrozný riadok /var/www/site/data/www/site/index .php.
      Niekedy pri presmerovaní získate neočakávaný výsledok, napríklad ste chceli odstrániť parametre post = 17434801_4060 z adresy http://site.ru/page-name?post=17434801_4060, označili ste príslušné pravidlá (o nich bude napísané nižšie) a ako výsledok dostal riadok http://site.ru/usr/local/www/site.ru/www/page-name - zbavil sa parametrov, ale dostal zvláštnu adresu. Je to preto, že ste na začiatok súboru po RewriteEngine On nezahrnuli direktívu RewriteBase /, ktorá nastavuje špecifickú základnú adresu URL pre transformácie v kontexte adresára.
  • Metaznaky sa používajú na definovanie skupín znakov alebo „štítkov“ vo vzore:
    • ^ - označenie začiatku riadku,
    • $ - značka konca riadku,
    • ! - negácia,
    • \ - úniková lomka, umožňuje považovať nasledujúci metaznak za obyčajný znak,
    • ... - bod, označuje akýkoľvek znak, ale iba jeden,
    • () - zoskupenie.
  • Modifikátory sa umiestňujú za bežné znaky, metaznaky alebo ich skupiny a rozširujú možnosti použitia šablón:
    • ? - znak sa opakuje 0 alebo 1 krát,
    • * - Opakuje sa od 0 do 65536 krát,
    • + - Opakuje sa od 1 do 65536 krát.
  • Príznaky definujú ďalšie možnosti pre toto pravidlo a sú uvedené v hranatých zátvorkách oddelených čiarkami:
    • NC - (nocase) zakáže kontrolu prípadu.
    • R - (redirect) zastaví proces konverzie a vráti výsledok do prehliadača klienta ako presmerovanie na danú stránku (302, MOVED TEMPORARY). Pomocou tohto príznaku môžete zadať iný kód výsledku, napríklad R = 301 vráti presmerovanie s kódom 301 (PREHNUTÉ NATRVALO). Ako si viete predstaviť, presne toto potrebujeme.
    • L - (posledný) zastaví proces konverzie a aktuálny odkaz sa považuje za konečný.

Najčastejším prípadom je presmerovanie 301 z index.php (html) na domovskú stránku. Na 90 % stránok sa vyskytuje problém s duplikovaním hlavnej stránky na adresách http://site.ru a http://site.ru/index.php (alebo index.html, index.htm alebo iná možnosť , na tom nezáleží, alebo aj všetko naraz). Niekde je to zrejmé, keď napríklad odkaz z loga vedie na site.ru a odkaz v menu na site.ru/index.php, niekde to nie je zrejmé, keď sa pri zadávaní nájde duplikát adresu z index.php ručne ... Dôležité je len vyriešiť problém. A navrhujem univerzálnu možnosť, tu je:

RewriteCond% (THE_REQUEST) ^ (3, 9) \ / index \. (Php | html | htm) \ HTTP / RewriteRule ^ (. *) Index \. (Php | html | htm) $ $ 1

RewriteCond% (THE_REQUEST) ^ (3.9) \ / index \. (Php | html | htm) \ HTTP / RewriteRule ^ (. *) Index \. (Php | html | htm) $ $ 1

Stačí vložiť tento kód nezmenený za riadok za riadok „RewriteEngine On“ a žiadny problém!

Mnohí, ktorí začnú na stránke bojovať s duplikátmi, sa pýtajú, odkiaľ takéto odkazy pochádzajú. ktoré duplikujú hlavnú stránku http://site.ru/page-name.html & príspevok = -1234567_8901? Odkiaľ pochádza predpona & príspevok = -1234567_8901 - toto „dobro“ je prevzaté z VKontakte, keď niekto zdieľa odkaz na vašu stránku na svojej stene, v skupine alebo verejne, automaticky sa pridá podobný riadok, zrejme na sledovanie niektorých štatistiky.

Aby ste sa tohto nezmyslu zbavili raz a navždy, musíte do htaccess pridať:

RewriteCond% (REQUEST_URI) ^ (. *) \ & Sa = RewriteRule ^ (. *) \ & Sa = (. *) $ $ 1

Ako vidíte, medzi týmto a predchádzajúcim prípadom nie je žiadny rozdiel, aj keď máte vo svojej adrese URL & post = alebo & sa = alebo čokoľvek, riešenie je rovnaké, stačí nahradiť zrejmé časti kódu .

Zbavenie sa parametrov alebo štítkov v adrese

Otázka bola položená v komentároch aj mnohokrát na fóre, takže ju nemôžete ignorovať. Čo robiť s takýmito duplikátmi: http://site.ru/?abrakadabra alebo skutočnejší prípad http://site.ru?utm_source=twitterfeed&utm_medium=twitter

Tento prípad je mierne odlišný od nasledujúceho bodu, kde sa zbavíme parametrov pre php skript, keďže tu skriptu neodovzdáme obvyklú adresu a parametre. Tu je riešenie:

RewriteCond% (QUERY_STRING) ^ lang = ru $ RewriteRule ^ (. *) \. Php \? (. *) $ $ 1 \ .php

% (QUERY_STRING) je reťazec so sadou premenných pre PHP, ktorý je súčasťou adresy URL za otáznikom (a pred kódom hash, ak existuje).

Nazývame url - http://site.ru/index.php?lang=ru

RewriteCond% (QUERY_STRING) ^ lang = ru $
Požadovaná adresa URL spadá pod toto pravidlo, neexistujú žiadne iné pravidlá, takže RewriteRule sa vykoná v riadku nižšie.
RewriteRule ^ (. *) \ .Php \? (. *) $ $ 1 \ .php

Adresa URL zdroja: http://site.ru/index .php? Lang = ru
Vzor analýzy webovej adresy: ^ (. *) \ .Php \? (. *) $
Adresa URL bude analyzovaná do premenných: $ 1 = http://site.ru/index, $ 2 = lang = ru a zostavená späť ako http://site.ru/index .php ($ 1 \ .php)
A potom dôjde k presmerovaniu 301 na novú adresu URL.

Príklad pravidiel pri zmene štruktúry webu

RewriteRule ^ príspevok / kategória /(.*)$ blog / kategória / 1 $ RewriteRule ^ príspevok /(.*)$ blog / príspevok / 1 $

RewriteRule ^ príspevok / kategória /(.*)$ blog / kategória / 1 $ RewriteRule ^ príspevok /(.*)$ blog / príspevok / 1 $

Toto sú riadky, ktoré som musel pridať do súboru htaccess, keď som zmenil štruktúru svojho blogu.

Predtým som mal adresy takto: https: // site / post / 4358 a https: // site / post / category / seo, čo akosi porušilo logiku v štruktúre - blog je predsa len časť stránka, ale z nejakého dôvodu príspevky patria stránke, nie blogu a kategórie patria príspevkom, čo je tiež úplne nelogické ... info / blog / kategória / seo - blog je teraz samostatná sekcia webu a patria jej príspevky a kategórie patria blogu, nie príspevky.

Z rovnakého príkladu je zrejmé, že je dôležité dodržiavať postupnosť pravidiel. Ak by som prehodil riadky, teda riadok RewriteRule ^ post / (.. info / blog / post / category / seo by bolo vpredu a nie ako by malo byť na https: // site / blog / category / seo .

A posledný príklad - analýza bežnej chyby s adresou z koreňového adresára servera

Napríklad ste sa rozhodli vyriešiť tento problém, keď je stránka kategórie dostupná na dvoch adresách http://site.ru/razdel/podrazdel/index.php a http://site.ru/razdel/podrazdel/. Druhá adresa URL je správna a základná a adresa URL s index.php na konci je úplný duplikát, ktorého sa treba zbaviť.

Na presmerovanie z index.php do kategórie napíšete pravidlo:

RewriteEngine On RewriteBase /

301-presmerovanie zo stránky na stránku, na novú adresu

Najjednoduchší prípad je, keď potrebujete presmerovať jednu stránku na inú adresu. Ak potrebujete presmerovať niekoľko stránok, budete musieť napísať niekoľko pravidiel, ale v tomto prípade je lepšie použiť šablóny opísané vyššie. Existuje niekoľko úplne identických možností syntaxe:

Presmerovať 301 /názov-stránky1.html http://site.ru/názov-stránky2.html Trvalé presmerovanie /názov-stránky1.html http://site.ru/názov-stránky2.html Trvalé presmerovanie /názov-stránky1.html http : //site.ru/názov-stránky2.html

Presmerovať 301 /názov-stránky1.html http://site.ru/názov-stránky2.html Trvalé presmerovanie /názov-stránky1.html http://site.ru/názov-stránky2.html Trvalé presmerovanie /názov-stránky1.html http : //site.ru/názov-stránky2.html

Vyberte si jednu z troch a ja osobne preferujem prvú možnosť - je kratšia, jednoduchšia a zrozumiteľnejšia. Mimochodom, tu site.ru nemusí byť nevyhnutne rovnaká doména, ale akákoľvek iná.

Tu sme s .htaccess skončili a prešli sme na PHP.

Trvalé presmerovanie 301 s PHP

Zvyčajne používam presmerovanie PHP, keď mám problémy s .htaccess alebo sa ukáže, že funkcia php je logickejšia a zrozumiteľnejšia.

Syntax presmerovania 301 na samotné php je nasledovná:

hlavička (); hlavička ("Umiestnenie: http://site.ru"); zomrieť ("Presmerovanie");

hlavička ("HTTP / 1.1 301 Presunuté natrvalo"); hlavička ("Umiestnenie: http://site.ru"); zomrieť ("Presmerovanie");

Tieto riadky oznamujú prehliadaču klienta, že je potrebné vykonať trvalé presmerovanie na adresu http://site.ru z nejakej požadovanej stránky. V tomto prípade môže byť http://site.ru nielen adresou hlavnej stránky aktuálnej lokality, ale môže ňou byť aj akákoľvek iná lokalita. Ak sa niečo pokazilo a došlo k chybe, v okne prehliadača sa zobrazí nápis „Presmerovať“.

Aby to bolo jasnejšie, uvediem niekoľko príkladov funkcií, ktoré som napísal pre svoju blogovú stránku a snažil sa vyriešiť určité problémy.

Funkcia, ktorá vám umožňuje odstrániť konkrétny kus z adresy URL

if (strpos ($ _ SERVER ["REQUEST_URI"], "http: // lokalita")! == false) ($ real_page_url = "http: // lokalita" .str_replace ("/ http: // lokalita", " " , $ _SERVER ["REQUEST_URI"]); hlavička ( "HTTP / 1.1 301 presunuté natrvalo"); hlavička ("Umiestnenie: $ real_page_url"); zomrieť ("Presmerovanie"); )

if (strpos ($ _ SERVER ["REQUEST_URI"], "http: // stránka")! == false) ($ real_page_url = "http: // lokalita" ..1 301 Presunuté natrvalo "); hlavička (" Umiestnenie : $ real_page_url "); zomrieť (" Presmerovanie ");)

Raz som mal problém, že v paneli správcu webu sa objavila kopa 404 chýb, adresy týchto stránok boli v tvare https: //alaev..e. niekde v adrese sa objavila duplicitná adresa stránky. A potom som napísal funkciu, ktorá skontroluje, či URI (poznámka, nie URL, ale URI) obsahuje záznam „http: // site“, a ak áno, vystrihneme tento kúsok z adresy a napíšeme výsledok do premennej $ real_page_url a potom vykonáme presmerovanie 301 na správnu adresu z premennej.

Funkcia, ktorá odstraňuje koncovú lomku z adresy URL

if (($ _SERVER ["REQUEST_URI"], - 1, 1) == "/") ($ required_url = rtrim ($ required_url, "/"); hlavička ( "HTTP / 1.0 301 presunuté natrvalo"); hlavička ("Umiestnenie: $ požadovaná_url"); zomrieť ("Presmerovanie"); )

if (($ _SERVER ["REQUEST_URI"], - 1, 1) == "/") ($ required_url = rtrim ($ required_url, "/"); hlavička ("HTTP / 1.0 301 Presunuté natrvalo"); hlavička ( "Umiestnenie: $ required_url"); die ("Presmerovanie");)

Toto je najjednoduchšia funkcia, ktorá zisťuje, či je na konci požadovanej adresy stránky lomka, a ak áno, lomka sa odreže a dôjde k presmerovaniu 301 na adresu bez lomky.

Existuje oveľa viac možností, ktoré vám umožňujú zadať príkaz na presmerovanie v rôznych programovacích jazykoch, ako je ASP, Ruby on Rail atď., Ale ja sa v týchto jazykoch nevyznám, preto nebudem múdry a nebudem vám tu práškovať mozgy. Presmerovania sú možné aj pomocou metaznačky meta refresh, ako aj presmerovania na javascript- ale to je osud nepoctivých správcov dverí a vyhľadávače týmto presmerovaniam nerozumejú, dostanú odpoveď zo servera 200 OK. O týchto možnostiach teda neuvažujeme.

Trvalé presmerovanie 301 pre server nginx

Pamätáte si, že som písal o zrkadle mojej stránky, prístupnej cez ip? V dôsledku toho bol problém vyriešený presmerovaním napísaným v konfiguračnom súbore servera, ktorý sa zvyčajne nachádza tu /etc/nginx/nginx.conf. Boli tam napísané tieto riadky:

server (počuť 1.2.34.123:80 predvolene; názov_servera _; prepísať ^ / (. *) $ http://site.ru/$1 trvalé;)

server (počuť 1.2.34.123:80 predvolene; názov_servera _; prepísať ^ / (. *) $ http://site.ru/$1 trvalé;)

Hovorí, že ak dôjde k odvolaniu na IP adresu cez 80. port, potom je potrebné vykonať trvalé presmerovanie na site.ru.

Technická podpora mi to však neodporúčala so slovami: „Správnejšie by bolo nakonfigurovať HTTP server tak, že jednoducho ukončí spojenie, ak sa k nemu pristupuje na adrese, ktorá nie je výslovne uvedená v konfigurácia HTTP servera, toto je najspoľahlivejšia, najjednoduchšia, najbezpečnejšia a najmenej náročná možnosť pre serverové zdroje. Po chvíli budú stránky, ktoré sú neprístupné, pravdepodobne vyradené z indexu vyhľadávacieho nástroja."

Ďalší tip bol: „Keď potrebujete namiesto presmerovania ukončiť spojenie, potom nahraďte riadok“ prepíšte ^ / (. *) $ Http://site.ru/$1 trvalé; " takýto riadok "návrat 444;". Potom spustite: "invoke-rc.d nginx reload" ".

Zrazu to niekomu pomôže.

Príklady presmerovaní v najbežnejších prípadoch

Presmerovanie pre doménu www.site.ru na site.ru

server (počúvať 80; názov_servera site.ru; prepísať ^ http: //www.site.ru$request_uri? trvalé;)

Presmerovanie z http://site.ru/index.php na http://site.ru/

umiestnenie = /index.php (if ($ request_uri = /index.php) (prepísať ^ http: // $ hostiteľ? trvalé; # 301 presmerovanie) fastcgi_pass unix: /tmp/fastcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; vrátane fastcgi_params;)

umiestnenie = /index.php (if ($ request_uri = /index.php) (prepísať ^ http: // $ hostiteľ? trvalé; # 301 presmerovanie) fastcgi_pass unix: /tmp/fastcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; vrátane fastcgi_params;)

Niečo také. Nie som dobrý v konfigurácii konfigurácií nginx, vždy to zvládnem s nastaveniami Apache, takže ak máte nejaké otázky týkajúce sa nginx, len ťažko vám môžem pomôcť ...

Ako skontrolovať hlavičky HTTP a stavy odozvy servera

V tejto časti som chcel popísať rôzne služby a doplnky na kontrolu odozvy servera, no chápem, že tento príspevok je už taký dlhý, že sa budem musieť obmedziť len na odkazy na rozšírenia pre prehliadače Chrome a Firefox.

Doplnok HttpFox pre Firefox

HttpFox (tu je odkaz na doplnok) je môj obľúbený nástroj na sledovanie hlavičiek http. HttpFox zobrazuje priebeh načítania stránky riadok po riadku, čo umožňuje sledovať napríklad reťazce presmerovaní a vo všeobecnosti poradie a rýchlosť načítania stránky. Ak používate Mozillu, určite ju odporúčam.

Rozšírenie HTTP hlavičky pre Chrome

Sám nepoužívam rozšírenie HTTP Headers (tu je odkaz naň), ale internet mi poradil, aby som mu venoval pozornosť. Ak máte lepšie možnosti, odhláste sa v komentároch.

Týmto končím môj strašne dlhý a nudný príspevok priatelia.
Ďakujem, že ste si to prečítali až do konca, dúfam, že to bude naozaj užitočné.