URL perrašymo taisyklės
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ų:
Turinys
- 1 Peradresavimas iš http://mano-svetaine.lt į www.mano-svetaine.lt
- 2 Peradresavimas iš www.mano-svetaine.lt į http://mano-svetaine.lt
- 3 Peradresavimas iš senos svetainės į naują
- 4 Lankytojų perkėlimas į pagrindinį subdomeną
- 5 Vienos svetainės dalies nukreipimas
- 6 Visų, išskyrus vieną, lankytojų nukreipimas
- 7 Išimtis
- 8 Svetainės pasiekimas iš subdirektorijos
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 " | ":
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1|^195\.36\.67\.134|^195\.157\.64\.5
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]