Sivujen suojaus ja uudelleenohjaus .htaccess-tiedostossa 2009-05-26 17:00
| Kuvaus: | .htaccess-tiedosto on hakemiston juureen tallennettava tiedosto, jolla voi antaa palvelimelle ohjeita sivupyyntöjen käsittelemiseksi. Tässä ohjeessa sivujen suojaus ja uudelleenohjaus .htaccess-tiedoston avulla, ja muutamia esimerkkejä myös PHP:llä. Sivujen suojaus.htaccess-tiedosto luodaan haluttuun hakemistoon, ja siinä annetut ohjeet vaikuttavat hakemiston lisäksi kaikkiin sen alihakemistoihin. Jos saat tyhjänkin tiedoston lisäämisen jälkeen "Internal server error" -tyyppisiä virheilmoituksia kun yrität avata sivuja selaimessa, voi olla että palveluntarjoajasi ei salli tiedoston käyttöä ylipäätään, tiettyjä käyttämiäsi ominaisuuksia, tai sitten olet tehnyt kirjoitusvirheen. Hakemistolistauksen estoHakemistojen tiedostolistaukset, eli tiedot sen sisältämistä tiedostoista, voi estää rivillä: IndexIgnore */* Huom! Tämä ei estä pääsyä itse tiedostoon jos tietää sen osoitteen. Liikenteen rajausEstetään kokonaan pääsy hakemistoon ja sen alihakemistoihin: deny from all Sallitaan sivujen avaaminen vain tietyistä IP-osoitteista, ja viimeisellä rivillä tietyn alkuisista domain-nimistä: order deny,allow deny from all allow from xxx.xxx.xxx.xxx allow from yyy.yyy.yyy.yyy allow from domain.com SalasanasuojausSivut voi suojata kirjoittamalla (tässä Windows-palvelimella) .htaccess-tiedostoon AuthType Basic AuthName "Alueen nimi tai kuvaus" AuthUserFile d:/hakemistopolku/palvelimella/.htpasswd require valid-user ja .htpasswd-tiedostoon kayttajatunnus:salasana Joillakin palvelimen asetuksilla .htpasswd-tiedostolle saattaa olla määrätty sijainti, mutta osalla onnistuu tämän ohjeen mukaisesti samaan laittamalla samaan tai vapaavalintaiseen kansioon. Vastaavasti itse salasana pitää/kannattaa kirjoittaa salattuna. Uudelleenohjaus.htaccessOhjataan yksittäinen sivu uudelle sivulle: Redirect 301 /vanhasivu/ http://example.org/uusisivu/
Kaikki alisivut uudelleenohjataan siten että yritetään etsiä samanmuotoinen täydennys URL-osoitteeseen. Redirect 301 /alihakemisto http://example.org/alihakemisto
Virhesivujen uudelleenohjaus: ErrorDocument 500 500.htm ErrorDocument 404 404.htm ErrorDocument 403 403.htm ErrorDocument 401 401.htm PHPPHP:n kyselytyyppisten URL-osoitteiden uudelleenohjaukset saa tehtyä helpoiten PHP:llä itsellään. <?php
if(!empty($_SERVER['QUERY_STRING']) && isset($_GET['id'])) {
$redirects = array(
'/?id=5' => 'http://example.org/uusiosoite/',
'/?id=11' => 'http://example.org/uusiosoite2/',
'/?id=45' => 'http://example.org/uusiosoite3/',
'/?id=54' => 'http://example.org/uusiosoite4/',
);
$urlisnow = '/?'.$_SERVER['QUERY_STRING'];
foreach ($redirects as $key => $val) {
if ($urlisnow == "$key") {
header("HTTP/1.1 301 Moved Permanently");
header("Location: $val");
exit;
}
}
}
?>
Sivut alhaallaTässä esimerkissä ylläpitäjä (vaihda IP kohtaan xxx.xxx.xxx.xxx) pääsee sivuille normaalisti, kun muut kävijät näkevät sitedown.php-tiedostossa annetun sisällön. .htaccess-tiedostoon: RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx\$
RewriteRule !sitedown.php$ /sitedown.php [L]
ja sitedown.php-tiedostoon <?php
header("HTTP/1.1 503 Service Unavailable");
header("Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
?>
<h2>Joku ilmoitus käyttäjälle</h2>
www.-alku pois URL-osoitteistaUudelleenohjataan kaikki www.example.org-alkuiset pyynnöt example.org-alkuisiin: RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.org$
RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]
SekalaistaUTF-8-merkistöt oletuksenaKaikille tiedostoille: AddDefaultCharset UTF-8 Pelkille html-tiedostoille AddCharset UTF-8 .html Huom! Tämä asetus ajaa yli (X)HTML-asiakirjan meta-tiedoissa annetun merkistöasetuksen. |
| Luokka: | web » ohjelmointi |
| Avainsanat: | web, palvelin, .htaccess, PHP, uudelleenohjaus, tietoturva, login, salasana |