URL perrašymo taisyklės: Skirtumas tarp puslapio versijų

Iš IV pagalba klientams.
Peršokti į: navigacija, paiešką
(Visų, išskyrus vieną, lankytojų nukreipimas)
 
106 eilutė: 106 eilutė:
 
</pre>
 
</pre>
  
[[Kategorija:Talpinimo_problemų_sprendimas]]
+
[[Kategorija:Serverio_ir_PHP_nustatymai]]

Dabartinė 14:00, 11 rugsėjo 2019 versija

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 " | ":
 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]