.htaccess ja .htpasswd
Tässä Mod_Rewrite -oppaamme jatkoksi vielä muutamia lisävinkkejä .htaccesin käyttöön:
Uudelleenohjaukset
Luonnollisesti uudelleenohjaus toimii Mod_Rewrite:n avulla:
RewriteEngine on
RewriteRule ^vanha\.html$ uusi.html [R]
Uudelleenohjauksia voidaan tehdä myös tähän tapaan ilman Rewrite engineä:
Redirect 301 /vanha-sivu.html http://www.sivusto.com/uusi-sivu.html
Redirect 302 /vanha-sivu.html http://www.sivusto.com/uusi-sivu.html
Tämän vaihtoehdon on kuitenkin oltava sallittu httpd.conf -tiedostosta. Saat sen käyttöön “AllowOverride” -kohdasta lisäämällä “All” vaihtoehdon sen perään (AllowOverride All).
Suojaa kuviasi suoralta linkitykseltä
Mod_Rewriten avulla voit helposti suojata myös sivustosi kuvia suoralta linkitykseltä toisille sivustoille. Säästät sekä kaistaa että muita palvelinresursseja, kun estät turhan liikenteen:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sivustosi.com(/)?.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png|bmp|psd)$ [F,NC,L]
Jos haluat, voit myös tarjota haluamasi kuva kaistan/kuvan varastajille:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sivustosi\.com(/)?.* [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ images/kuvavaras.gif [NC,L]
Luonnollisesti voi myös lisätä useamman sivuston, jotka voivat käyttää kuviasi:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sivustosi\.com(/)?.* [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?toinensivustosi\.com(/)?.* [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?kolmassivustosi\.com(/)?.* [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ images/kuvavaras.gif [NC,L]
Kustomoidut virhesivut
Voit määritellä kustomoidut virhesivut sivustollesi helposti .htaccesin avulla. Lisäät vain esimerkin kaltaisen lauseen uudelle riville (voi toki muuttaa virhesivun numeroa mielesi mukaan) :
ErrorDocument 404 /kansio/virhe404.html
Tässä yleisimmät virhekoodit:
401 Unauthorized - pääsy kielletty (suojattu esim. salasanalla)
403 Forbidden - kielletty
404 Not Found - sivua ei löytynyt
500 Internal Error - virhe palvelimella
Kansioiden ja tiedostojen suojaaminen salasanalla
.htaccess tarjoaa yhdessä .htpasswd -tiedoston kanssa hyvän salasanasuojauksen halutuille tiedostoille tai kansioille.
Esimerkki
Halutaan kansio yksityinen suojatuksi salasanalla. oletetaan, että kansion osoite on http://www.sivusto.com/yksityinen/. Lisätään yksityinen -kansion .htaccessiin:
<files *>
AuthName “Ei pääsyä”
AuthType Basic
AuthUserFile /home/polku/salasanatiedostoon/.htpasswd
Require valid-user
</files>
Nyt luodaan .htpasswd tiedosto haluttuun paikkaan ja kirjoitetaan sen polku .htaccessin sisältöön. .htapasswd -tiedostoon ei tule liittää muuta kuin käyttäjätunnus ja salasana muodossa käyttäjätunnus:salasana. Täytyy kuitenkin muistaa, että salasana täytyy salata toimiakseen. Se onnistuu helposti esimerkiksi täällä.
Haluamme käyttäjätunnukseksi heppu ja salasanaksi hdklgs42. Syötämme ne salaajaan ja saamme tulokseksi heppu:RPnO.C0HrLEyg, jonka liitämme sis .hpasswd -tiedostoon.
Nyt jos käyttäjä yrittää pääsyä /yksityinen -kansioon, kysyy ponnahduslomake häneltä käyttäjätunnustä ja salasanaa. Jos käyttäjä ei tiedä niitä, vastaanottaa hän virhesivun.
Myös pelkästään yksittäisen tiedoston suojaaminen onnistuu muokkaamalla vain hieman edellistä .htaccessiin lisättyä koodia:
<files “tiedostonimi.html”>
AuthName “Ei pääsyä”
AuthType Basic
AuthUserFile /home/polku/salasanatiedostoon/.htpasswd
Require valid-user
</files>
(Huomaa esimerkeissämme, että blogisofta vääristää heittomerkit, joten muista muuttaa ne oikeiksi jos käytät esimerkkejä)
nico kommentoi että,
06.03.2006 @ 22:56
Miten muuten kun liikenne pitäisi ohjata yhdeltä saitilta toiselle? Onko noi esimerkit sitäkin varten?
Hakukoneoptimointia kommentoi että,
06.03.2006 @ 22:56
Kyllä vain. Esim:
Tai Mod_rewriten avulla vanhalla sivustolla olevat (samannimiset) tiedostot uudelle sivustolle:
tai voi sitä koittaa vaikka PHP:lla
Hakemistot kuntoon kommentoi että,
15.04.2006 @ 22:56
[…] On parempi pysyä vain yhdessä tavassa ja huolehtia siitä, että kaikki sivuston linkit linkittävät juuri samaan osoitteeseen. Suosittelemme käyttämään kauttamerkkiä aina, mikäli mahdollista (/hakemisto/). Vielä parempi jos voit liittää osoitteeseen automaattisesti kauttamerkin esimerkiksi Mod_Rewriten avulla tai muuten uudelleenohjata muut mahdolliset tuplasisältöä aiheuttavat osoitteet kauttaviivalla varustettuun. […]
Hakukoneoptimointi - Sanasto kommentoi että,
23.05.2006 @ 22:56
[…] Lue lisää: .htaccess ja .htpasswd […]
Wertti kommentoi että,
21.06.2006 @ 22:56
RewriteEngine on
RewriteRule ^index\.php$ http://www.uusikotisivu.com/ohjaustallesivulle.php [R]
Mitenkäs tuon saisi uudelleenohjaamaan kaikki alasivutkin tuolta vanhasta domainista tietylle sivulle uuteen domainiin.
Esim jos sivurakenne on www.vanhakotisivu.com/index.php?sivu=ekasivu
Kiitos jo etukäteen…
Hakukoneoptimointia kommentoi että,
07.07.2006 @ 22:56
Kyllä sen pitäisi toimia tuolla minkä näytitkin ja raapaista muuttujatkin mukaan.
RewriteRule ^index\.php$ http://www.uusikotisivu.com/ohjaustallesivulle.php [R=301,L]
Vai tarkoititko, että haluat dumpata muuttujat kokonaan?
Artur kommentoi että,
16.10.2006 @ 22:56
Hei,
Olen tehnyt .htaccess/htpasswd tiedostolla suojauksen erääseen webbikansiooni, mutta onko mahdollista samalla tekniikalla tehdä se suojaus niin, että se kysyy vain ja ainoastaan salasanaa eikä käyttäjätunnuksia?
Terveisin,
- Artur