HUOM! Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla

 Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.

.htaccess

Kohteesta Wikikko - kansan taitopankki
Loikkaa: valikkoon, hakuun

Yleistä[muokkaa]

.htaccess tiedostossa voidaan määritellä monia asioita.

  • .htaccess voi muokata tekstieditorilla, mutta ASCII -muodossa tiedonsiirto palvelimelle ?
  • .htaccess sijaitsee juurihakemistossa esim. public_html tai www. Lisäksi niitä voi olla myös ohjelmilla omiansa.
  1. risuaidalla merkittyä riviä ei lueta, voit käyttää vapaasti
  • Not Found The requested URL was not found on this server. ja Error: PHP is not running WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off. Katso sivu Wordpress Laita kyseiseen alihakemistoon .htaccess tiedosto, jossa on tarvittavat ohjaukset yms.

Estä IP-osoite[muokkaa]

  • Lisää seuraavat:
order allow,deny
deny from TÄHÄN IP-OSOITE
deny from TÄHÄN TOINEN IP-OSOITE JNE.
allow from all
  • IP-osoite voi olla esim. muotoa 192.168.1.2 eli se mistä esimerkiksi yritetään jatkuvasti kirjautua kotisivujen jäsenosioon ilman olemassa olevaa tunnusta tai muuten häiriköidään.
    • IP-osoitealueen voi estää esim. 192.168.1.
    • IP-osoite voi olla myös esim. jokudomain.fi

Oikeudet[muokkaa]

.htaccess tiedoston oikeudet ovat 644

Piilotiedostojen näyttäminen[muokkaa]

Mac[muokkaa]

Katso Mac_vinkit#Piilotiedostojen_näyttäminen

Salasanasuojattu hakemisto[muokkaa]

Seuraava ohje asettaa palvelimella olevalle hakemistolle ja sen alahakemistoille salasanasuojauksen. Kun selaimella yritetään avata osoitetta, avautuu ikkuna, joka pyytää tunnistautumaan. Tämän jälkeen sivusto aukeaa. Tämä voi olla hyödyllinen esimerkiksi silloin kun käytetään hiekkalaatikko-toimintoa esimerkiksi WordPressissä ja käytössä ei ole WordPressin normaali tunnistautumismenetelmä vaan jonkun lisäosan kirjautuminen WordPressiin. Tällöin hiekkalaatikko-lisäosa ei mahdollisesti päästä kirjautumaan sivustolle ja suojaustasoa joudutaan laskemaan.

http://www.htaccesstools.com/articles/password-protection
  • Selvitetään salattavan hakemiston tarkka osoite
    • Tee tekstitiedosto osoite.php, joka sisältää seuraavan php-koodin ja sijoita se salattavaan hakemistoon.
<?php
$dir = dirname(__FILE__);
echo "<p>Polku hakemistoon on " . $dir . "</p>";
echo "<p>Polku .htpasswd-tiedostoon on " . $dir . "/.htpasswd" . "</p>";
?>
    • Suorita kyseinen tiedosto: www.osoite.fi/hakemistojossatiedosto/osoite.php
  • Muodostetaan käyttäjätunnus ja salasana
  • Asenna salattavaan hakemistoon .htpasswd -tekstitiedosto, joka sisältää äsken muodostetun käyttäjätunnus-salasana -rivin. Näitä voi olla tiedostossa useampi omalla rivillään eri käyttäjille. Aseta tiedosto-oikeudeksi 444.
  • Asenna salattavan hakemiston .htaccess -tiedostoon seuraava koodi. Aseta tiedosto-oikeudeksi 644
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /polku/jonka/sait/aiemmin/selvitettyä/.htpasswd
Require valid-user

Tiedostoluettelo[muokkaa]

Jos .htaccess tiedostossa ei ole riviä Options -indexes eikä index.php/html/htm tms. niin näytetään kyseisessä hakemistossa olevat tiedostot. Lisää siis .htaccess tiedostoon seuraava rivi etteivät tiedostot näy, ellet sitten halua niiden näkyvän:

Options -indexes

Uudelleenohjaukset[muokkaa]

The configuration directives found in a .htaccess file are applied to the directory in which the .htaccess file is found, and to all subdirectories thereof. However, it is important to also remember that there may have been .htaccess files in directories higher up. Directives are applied in the order that they are found. Therefore, a .htaccess file in a particular directory may override directives found in .htaccess files found higher up in the directory tree. And those, in turn, may have overridden directives found yet higher up, or in the main server configuration file itself.

"When you put configuration directives in a .htaccess file, and you don't get the desired effect, there are a number of things that may be going wrong. Most commonly, the problem is that AllowOverride is not set such that your configuration directives are being honored. Make sure that you don't have a AllowOverride None in effect for the file scope in question. A good test for this is to put garbage in your .htaccess file and reload. If a server error is not generated, then you almost certainly have AllowOverride None in effect. If, on the other hand, you are getting server errors when trying to access documents, check your Apache error log. It will likely tell you that the directive used in your .htaccess file is not permitted. Alternately, it may tell you that you had a syntax error, which you will then need to fix."

http://httpd.apache.org/docs/2.0/howto/htaccess.html

TÄRKEÄÄ 1[muokkaa]

  • Selain täytyy tyhjentää välillä, koska voi olla että yrität tehdä muutoksia ihan oikein, mutta selain temppuilee sivua ladatessa.
    • Safari / Nollaa Safari... / Tyhjennä historia
    • Firefox / Sivuhistoria / Poista historiatietoja / Väliaikaistiedostot

TÄRKEÄÄ 2[muokkaa]

cPanelin kautta tehdyt muutokset eivät esimerkiksi välttämättä kaikki toimi eikä myöskään suoraan .htaccess tiedostoon tehdyt uudelleenohjaukset jos RewriteOptions inherit on päällä. Kokeile laittaa risuaita sen eteen ja tyhjennä selain, ennen kuin alat säätämään muuta.

#RewriteOptions inherit

TÄRKEÄÄ 3[muokkaa]

  • Varmista että VARMASTI olet kirjoittanut osoitteet oikein. Esimerkiksi ettei ole domainfi.fi kun pitäisi olla domain.fi

Uudelleenohjaus useampaan hakemistoon[muokkaa]

Tavoite kun esimerkiksi drupal ja magento ovat saman juurihakemiston kaksi alihakemistoa:

www.domain.fi   # ohjaa esimerkiksi drupal kansioon eli varsinaisille kotisivuille
www.domain.fi/magento   # ohjaa esimerkiksi magento verkkokauppaan

Esimerkissä on käytetty domain.fi jonka korvaat tietysti omalla domainilla sekä myös hakemistot johon haluat ohjata, esimerkissä käytetty drupal ja magento sekä niiden vaatimat index.php -päätteet.

RewriteEngine on

# RewriteOptions inherit  Tämä tässä muistutuksena että poista risuaidalla pois käytöstä

# Tämän merkitystä en tiedä tai osaa selittää
# Rewrite JavaScript callback URLs of the form js.php?q=x.
RewriteCond %{REQUEST_URI} ^\/js\/.*
RewriteRule ^(.*)$ js.php?q=$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^domain\.fi$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.fi$
RewriteRule ^magento\/$ "http\:\/\/www\.domain\.fi\/magento\/index\.php" [R=301,L]

RewriteCond %{HTTP_HOST} ^domain\.fi$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.fi$
RewriteRule ^/?$ "http\:\/\/www\.domain\.fi\/drupal\/index\.php" [R=301,L]

Vaihtoehto 1[muokkaa]

Tämä on yksinerktainen vaihtoehto

RewriteRule !^cmsmadesimple/ /cmsmadesimple%{REQUEST_URI} [L,NC]

Vaihtoehto 2[muokkaa]

Redirect /index.html http://domain.fi/cmsmadesimple/

Vaihtoehto 3[muokkaa]

RewriteCond %{THE_REQUEST} ^GET\ /cmsmadesimple/
RewriteCond %{HTTP_HOST} ^(www\.)?domain.fi$
RewriteRule ^cmsmadesimple/(.*) /$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?domain.fi$
RewriteRule !^cmsmadesimple/ cmsmadesimple%{REQUEST_URI} [L]

Vaihtoehto 4[muokkaa]

Jos ei toimi, voit kokeilla myös tällaista (ei testattu)

RedirectMatch 301 ^/magento/$ http://www.domain.fi/magento/index.php

Vaihtoehto 5[muokkaa]

Jos ei toimi, voit kokeilla myös tällaista (ei testattu)

Options +FollowSymLinks
RewriteBase /
RewriteRule ^/magento(.*)$ http://www.domain.fi/magento/index.php$1 [L,R=301]

Linkkejä[muokkaa]

Virhetilanteet ja vinkit[muokkaa]

  • 500 Internal Server Error
    • Korjaa .htaccess tiedosto
  • Uudelleenohjaus alihakemistossa olevaan julkaisujärjestelmän etusivulle toimii domainista, mutta sivustossa liikkuminen aiheuttaa ulkoasun putoamisen pois etusivulta ja sivulta toiselle siirtyminen ei onnistu. Tarkista että julkaisujärjestelmän config.php tms. tiedostossa url-osoite on varmasti oikein, ettei ole kirjoitusvirhettä esm. domainfi.fi kun pitäisi olla domain.fi
  • www ei näy: Lisää julkaisujärjestelmän config.php tms. tiedostoon root_url tms. kohtaan http://www.domain.fi/alihakemisto
  • Uudelleenohjaus public_html -kansiossa .htaccess-tiedostossa johonkin alihakemistoon. Public_html-kansioiden muissa alihakemistoissa täytyy myös olla .htaccess, jossa vähintään rivi: RewriteEngine On
    • Muutoin selain ei löydä hakemisto ja ilmoittaa: Not Found The requested URL was not found on this server.

Linkkejä[muokkaa]

How To Troubleshoot and Fix WordPress 404 Errors (Plus an Essential Tip on Redirects)