Visuose serveriuose yra įdiegtas mod_rewrite modulis, kuris suteikia labai daug galimybių URL (WWW adresų/domenų) perrašymui.
Tam reikės naudoti failą .htaccess kuris yra pagrindiniame svetainės kataloge public_html arba toje direktorijoje, kurią norite apsaugoti. Jei šio failo nėra - jį galite tiesiog sukurti.
Taisyklė įsigalioja ją įrašius į .htaccess failą. Keletas populiariausių pavyzdžių:
Peradresavimas iš http://mano-svetaine.lt į www.mano-svetaine.lt
# peradresavimas is domeno i www subdomena
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mano-svetaine\.lt$ [NC]
RewriteRule ^(.*)$ http://www.mano-svetaine.lt/$1 [R=301,L]
Pastaba: vietoj mano-svetaine, lt ir mano-svetaine.lt naudokite savo svetainės adresą
Peradresavimas iš www.mano-svetaine.lt į http://mano-svetaine.lt
# pastovus peradresavimas iš www subdomeno į domeną
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mano-svetaine\.lt$ [NC]
RewriteRule ^(.*)$ http://mano-svetaine.lt/$1 [R=301,L]
Pastaba: vietoj mano-svetaine, lt ir mano-svetaine.lt naudokite savo svetainės adresą
Peradresavimas iš senos svetainės į naują
Svetaines peradresuoti galima ir kitais būdais (paspauskite čia), tačiau peradresavimas .htaccess failu naudingas specifinėse situacijose, pvz. jei nekeičiant katalogų struktūros svetainės failai buvo perkelti kitam domenui ir dar nereikia "senojo" domeno pridėti kaip sinonimo į naująjį adresą (kas tai yra rasite paspaudę čia).
# Nukreipiama i naujaja svetaine
RewriteEngine On
RewriteRule ^(.*)$ http://www.nauja-svetaine.lt/$1 [R=301,L]
Pastaba: vietoj nauja-svetaine.lt naudokite savo svetainės adresą
Lankytojų perkėlimas į pagrindinį subdomeną
Naudinga tuomet, kai sukuriamas atskiras subdomenas ir nenorite, jog lankytojai jį atidarytų surinkę adresą mano-svetaine/subdomenas, o reikia, kad visada veiktų subdomenas.mano-svetaine.lt:
RewriteEngine on
RewriteRule ^subdomenas/(.*)$ http://subdomenas.mano-svetaine.lt/$1 [R=301,L]
Prireikus galima sukurti išimtį, pvz. adresu "mano-svetaine.lt/nekeisti" nebus atliekamas joks pakeitimas:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/nekeisti
RewriteRule ^subdomenas/(.*)$ http://subdomenas.mano-svetaine.lt/$1 [R=301,L]
Vienos svetainės dalies nukreipimas
redirect 301 /dabartinis/failas.html http://www.kita-svetaine.com/naujas/failas.html
Visų, išskyrus vieną, lankytojų nukreipimas
Naudinga tuomet, kai dar kuriama svetainė ir visiems, išskyrus programuotoją, norima atvaizduoti vieną svetainės versiją, programuotojui - kitą.
Tam, kad peradresuotų lankytojus į kitą puslapį:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteRule (.*) http://Kitas_adresas.lt/$1 [R=301,L]
Tam, kad atvaizduotų kažkokį failą:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteRule \.html$ /kitas_puslapis.html [R=302,L]
Norint lankytojus nukreipti į kitą, to paties domeno katalogą (pavyzdžiui "testas"), galite panaudoti kodą:
Options +FollowSymlinks RewriteEngine on RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 RewriteRule ^((?!testas/).*?)/?$ testas/$1 [L,NC]
jei reikia pridėti keletą IP adresų, jie atskiriami naudojant " | ":
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteRule ^((?!testas/).*?)/?$ testas/$1 [L,NC]
Išimtis
Galima sukurti specialias taisykles, kuomet peradresavimas nesuveikia. Pvz. ši taisyklė nutrauktų peradresavimą, jei atidaromas adresas būtų http://mano-svetaine.lt/failas.txt
RewriteCond %{REQUEST_URI} !/failas.txt [NC]
Svetainės pasiekimas iš subdirektorijos
Jei norima svetainę pasiekti iš 1 lygiu žemiau esančio katalogo (subdirektorijos), pavyzdžiui testas (t.y iš public_html/testas), pagrindiniame kataloge (public_hml) .htaccess faile įterpkite šį kodą:
RewriteEngine on
RewriteBase /
RewriteRule ^((?!testas/).*?)/?$ testas/$1 [L,NC]