Primeri Primene 301-og Redirekta u fajlu .HTACCESS. - IBP Studio

Šta je to redirekt i zašta služi

Redirekt - preusmeravanje korisnika sa jednog URL na drugi. Naprimer, prilikom prelaza po linku http://ibpstudio.com/blog  brauzer automatski preusmerava korisnika na URL https://ibpstudio.com/blog.

Redirekt pomaže korektno preusmeriti korisnika na potrebne stranice sajta bez posledica korisničkog iskustva i bez kršenja zahteva pretraživača. Pravilno izvršeno preusmerenje ostavlja bez posledica autoritet ili referentnu težinu stranice-donora i predaje je na stranicu-akceptora.

 Uvod u Redirekt u .htaccess fajlu

Pravila koja dajemo u daljem tekstu su isprobani na serverima Apache i NGINX.

Pravilo : %{QUERY_STRING} - znači fragment URL-adrese posle znaka pitanja (zadane vrednosti CGI- parametara). Pokretanje određenog pravila redirekta se opredeljuje time dali URL adresa ispunjava pravilo ili ne. Značenje pravila (^, $, NC) ćemo opisati na kraju stranice.

Niže u tekstu privodimo primere najčešćih pravila podešavanja fajla .htaccess za 301-redirekt. Najbolje je pisati pravila posle komandi:

Options +FollowSymLinks
RewriteEngine On

Komentari u fajlu se označuju sa tarabom «#» na početku reda

# Komentar sa tekstom. Ovaj tekst se ne obrađuje serverom.

301-redirekt sa domena bez WWW na domen sa WWW prefiksom

RewriteCond %{HTTP_HOST} ^site\.rs$ [NC]
RewriteRule ^(.*)$ http://www.site.rs/$1 [R=301,L]

Redirekt sa domena sa WWW prefiksom na domen bez prefiksa

RewriteCond %{HTTP_HOST} ^www.site\.rs$ [NC]
RewriteRule ^(.*)$ http://site.rs/$1 [R=301,L]

Za verziju HTTPS:

RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://site.rs/$1 [R=301,L]

 Standardno preusmeravanje sa jedne statičke stranice na drugu

Redirect 301 /was.php http://www.site.rs/new.php

 Kod takvog redirekta novu adresu je neohodno napisati u potpunosti sa htp protokolom i domenom.

Slučaj redirekta sa pravilom RewriteRule

RewriteRule ^dir /dir-new/$1 [R=301,L]

 301-redirekt na stranici sa GET parametrima

Recimo, adresa stranice izgleda : http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 i u tom slučaju prilikom podešavanja 301 redirekta na novu adresu, treba primeniti sledeće pravilo:

RewriteCond %{QUERY_STRING} ^IBLOCK_ID=1&SECTION_ID=111$ [NC]
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]

Ako je neki ili nekoliko GET parametara nisu poznati ili imaju slučajno značenje(kod nas je to SECTION_ID) možemo koristiti sledeći kod:

RewriteCond %{QUERY_STRING} ^IBLOCK_ID=1&SECTION_ID=(.*)$ [NC]
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]

301-redirekt sa stranice bez parametra u korenu

AKo imamo adresu: http://www.site.rs/?abc za redirekt koristimo sledećapravila:

RewriteCond %{QUERY_STRING} ^abc$ [NC]
RewriteRule ^$ /? [R=301,L]

301-redirekt za konkretni fajl - nije za ceo folder

Ako treba na podesimo preusmeravanje samo za adresu http://www.site.ru/dir/, ali da se stranica http://www.site.ru/dir/index.php?IBLOCK_ID=1 otvara na staroj adresi, upotrebljavamo specijalan simbol $ u pravilu.

RewriteRule ^dir/$ http://www.site.rs/new-dir/ [R=301,L]

Redirekti sa  domenima u zoni СРБ

Sa domenima u zonama СРБ važe sva pravila koje važe i za ostale latinične domene, samo moramo sve ćirilćne simbole zameniti sa alternativnim simbolima na latinici. Domen СРБ se prevodi(Punycode) na xn--90a3ac. Dekodirati ćirilićni domen možete pogledati na sledećem linku https://wwhois.ru/punycode.php.
 

301-redirekt sa domena na domen

RewriteCond %{HTTP_HOST} ^old-site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Za domen u zoni СРБ

RewriteCond %{HTTP_HOST} ^xn--e1af0af.xn--90a3ac$ [NC]
RewriteRule ^(.*)$ http://www.site.rs/$1 [R=301,L]

 Podešavanje preusmeravanja na folder sa kosom crtom na kraju "/"

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

Podešavanje preusmeravanja na folder bez kose crte "/" (brišemo "/" na kraju) 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]

301-redirekt sa domena na folder na drugom domenu

RewriteCond %{HTTP_HOST} ^si-te\.rs$ [NC]
RewriteRule ^(.*)$ http://www.site.rs/si-te/ [R=301,L]

Redirekt  svih fajlova u folderu na odre]eni fajl

RewriteRule ^dir(.*)$ /new-file.php [L,R=301]

Redirekt fajlova iz određenog foldera osim, određenog fajla

RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301]
RewriteRule ^dir(.*)$ /all.php [L,R=301]

Promena stranice sa html na php ekstenzije

RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php

Prenošenje fotografija iz foldera /img/ na poddomen

RewriteRule ^img/(.+)\.jpg$ http://img.domain.rs/$1.jpg [R=301,L]

Opredeljenje tipa indeksne stranice (php, html, htm i dr.)

Ukazuje se poredak učitavanjatipova indeksnog fajla, koji se nalazi u korenu kataloga.
DirectoryIndex index.html index.php index.htm index.shtml

Redirekt sa indeksne stranice php na sam folder ( koren ) 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.rs/ [R=301,L]

Для всех индексных страниц на сайте:
RewriteRule ^(.*)index\.php$ http://www.site.rs/$1 [R=301,L]

Redirekt sa poddomena na osnovni domen drugog nivoa

RewriteCond %{HTTP_HOST} ^test.site.rs$ [NC]
RewriteRule ^(.*)$ http://site.rs%{REQUEST_URI} [R=301,NC,L,QSA]

Redirekt za određeni fajl u raznim direktorijumima(folderima)

RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]

Kod nam dozvoljava staviti 301-redirekt sa svih foldera koji izgledaju http://site.rs/***/uniqe-file.html na jedan fajl u korenu /unique-file.html.  Takva operacija je korisna prilikom prepravke sajta i promeni linkova.

Ako treba da napravimo SEO-URL kopiju neke dinamičke stranice to takođe možemo realizovati pomoću fajla .htaccess-a.
RewriteRule ^testovi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11 [NC,L]

Kod dozvoljava napravitu kopiju stranice sa relativnom adresom /studio/news/detail.php?ID=230354&PAGEN_2=11 na adresi /testovi/test/

301-redirekt sa HTTPS-verzije na HTTP

RewriteCond %{HTTPS} "on"
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Omogućava eliminisati prisustvo dublova URL sa HTTPS u indeksu pretraživača.

Prenošenje sajta na verziju sa HTTPS protokola (za sve stranice)
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://domain.rs/$1 [R=301,L]

 

Pokazivanje puta ka fajlu 404 greške sa pomoću -htaccess
Pažnja, važno je da kod odgovora servera za 404 grešku bude baš 404. Put ka fajlu se pokazuje na sledeći naćin:
ErrorDocument 404 /404-for-me.php

 

Sva pravila  se ispunjavaju redom od gore na dole napisane u fajlu .htaccess i pravilo koje je napisano kasnije, kasnije će se izvršiti.

 

Brišemo sve GET parametre posle znaka pitanja (?)

RewriteRule (.*) $1? [R=301,L]

Piše se posle : RewriteBase /

Sintaksa za regularne izraze

. - Tačka zamenjuje bilo koji proizvoljan simbol.
[abc] - označava spisak simbola, koji se podudaraju sa slovima a, b, ili c.
[^abc] - spisak simbola, koji ne spadaju u napisani dijapazon. Sve osim a,b, ili c.
* - znači da budući simbol može da se ponavlja bezbroj puta (0 ili više puta).
[abc]* - komanda nalazi simbole kako su redom napisani.
[^abc]* - nalazi simbole obrnutim redom.

.* - zamenjuje absolutno bilo koji simbol ".*" - sav sadržaj između znakova interpunkcije.
^ - početak reda (u slučaju, ako se koristi na početku izraza).
$ - označava kraj reda.

\w - slovo, broj ili donja crtica _.
\d - zamenjuje bilo koji broj.
\D - zamenjuje bilo koji simbol, osim broja.
[0-9] - zamenjuje bilo koji broj.
[a-z] - bilo koje slovo ot a do z (latinica) mala slova.
[A-Z] - bilo koje slovo ot A do Z - velika slova.
[a-zA-Z] - bilo koje slovo od a do Z - i mala i velika slova.
[a-Z] - isto kao i prethodno.

Specijalni simboli koji se upotrebljavaju u fajlu .htaccess

  • ^ - specijalan simbol početka reda(string);
  • $ - specijalni simbol kraja reda;
  • ! - specijalni simbol negiranja;
  • . - tačka, koja zamenjuje bilo koji simbol, ali samo jedan;
  • () - grupisanje;
  • \ - «ekranizacija» kosa crta, sledeći simbol posle kojeg se računa kao običan, a ne kao specijalni simbol;
  • # - početak komentara teksta u fajlu.

Modifikatori 

Koriste se posle običnih specijalnih simbola ili njihovih grupa koji nam dozvoljavaju raširiti mogućnost šablona.

  • ? - simbol se ponavlja 0 ili 1 put.
  • + - ponavlja se od 1 do 65536 puta.
  • * - ponavlja se od 0 do 65536 puta.

Zastavice

Zastavice daju dopunjujuće opcije za korištenje pravila.  Zapisuju se u kvadratnim zagradama, sa zarezom između njih, primer [NC] ili [R=301,L].

  • NC — zastavica NoCase, ograničava proveru registra(malih i velikih slova) prilikom pokretanja pravila.
  • R — zastavica Redirect, proizvodi proces stopiranja promeni URL-adrese i vraća nam rezultat. Najčešće se koristi  R=301, ali se može koristiti i drugi za određeni vremenski redirekt (302, MOVED TEMPORARY).
  • L — zastavica Last, zaustavlja formiranje URL-adrese i red se smatra završenim.

 

 

 

Bez Komentara

Ostavite svoj komentar

In reply to Some User
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline
Advertisement
If you accept, the ads on the page will be adapted to your preferences.
Google Ad
Accept
Decline
Save