1.- Què és el fitxer .htaccess?

.htaccess (accés d'hiper-text) és el nom per defecte de l'arxiu de configuració de directoris d'Apache. S'utilitza per personalitzar la configuració de directives i paràmetres definits a l'arxiu de configuració principal de l'allotjament.


2.- Com creem i on col·loquem un fitxer .htaccess?

Per crear un fitxer .htaccess, obra el bloc de notes i introdueix el codi necessari. Guarda el fitxer com a fitxer de text (.txt), per exemple "fitxer_htaccess.txt", i el puges per FTP a la carpeta on ha d'utilitzar-se. Un cop al servidor, modifica el nom del fitxer "fitxer_htaccess.txt" pel de ".htaccess".


Important: si ja disposes d'un fitxer .htaccess dins del teu allotjament, pots utilitzar-ho per realitzar aquestes configuracions.


L'.htaccess ha de col·locar-se a l'interior de la carpeta on vols que tingui efecte. Per exemple, si vols protegir amb contrasenya una carpeta que es diu "privat", col·loca el .htaccess dins de la carpeta "privat".
El fitxer .htaccess té una gran varietat d'usos i utilitats que poden resultar útils a la web. En el següent tutorial mostrem algunes de les funcions més utilitzades.


3.- Utilitats comunes de l'.htaccess

L'.htaccess té un gran nombre d'utilitats, en aquest tutorial mostrem algunes de les més comunes i ensenyem com ha de configurar-se:

 

Redirigir subdomini a subcarpeta

Redirigir web mitjançant redireccions 301, 302

Redirigir web cap a una subcarpeta

Control d'accés al lloc web

Control d'accés a carpetes del lloc web

Llistat de carpetes

Redirigir peticions amb www.example.org a example.org i a la inversa

Redirigir web amigable amb SEO

Redireccionar el tràfic web

Redireccionar a connexió segura HTTPS

Redireccionar usuaris per fer servir HTTPS en una carpeta en concret

Evitar el hotlinking

Canviar la pagina per defecte

Forçar la cache del nostre lloc web

Millorar la compatibilitat dels caràcters

Crear URL amigables

 

Redirigir subdomini a subcarpeta

En algunes situacions pots necessitar crear una redirecció a la carpeta d'un subdomini des de l'.htaccess. Si vols que en indicar el "subdomini test.exemple.com", per exemple, et porti a la carpeta "exemple.com/test", has d'escriure les següents directives al fitxer .htaccess:


RewriteEngine on
RewriteCond %{HTTP_HOST} ^test.exemple.com$
RewriteCond %{REQUEST_URI} !^/test/
RewriteRule (.*) /test/$1


La primera línia activa el motor de re-direccions i només és necessari indicar-la, si no ho has fet abans.

La tercera i quarta fan la re-direcció.

I, la segona, impedeix que la re-direcció es faci de nou en cas que ja estiguis a la carpeta "test". Això és necessari per evitar errors i bucles de redireccions, ja que el fitxer .htaccess es torna a executar en redirigir la petició a la carpeta "test".

 

Redirigir web mitjançant redireccions 301, 302

Si en accedir al teu allotjament, desitges redirigir la pàgina a una altra:


RewriteEngine On
RewriteRule ^(.*)$ http://www.webaredirigir.com/$1 [R=301,L] (A "[R=301,L]" pot posar el tipus de redirecció que desitgem (301, 302...)  )

 

Redirigir web cap a una subcarpeta

Si tens la web en una subcarpeta diferent de la carpeta "web", pots redirigir totes les consultes a aquesta subcarpeta:


RewriteEngine on
RewriteCond % ^example.org\.org$
RewriteRule (.*) http://www.example.org/$1 [R=301,L]
RewriteRule ^$ carpeta [L]


On:
exemple.org\.org seria, per exemple, cdmon.com\.com
carpeta seria, per exemple, wordpress

 

Control d'accés al lloc web

Aquestes opcions serveixen per denegar l'accés a tots els usuaris o només permetre a un cert grup d'adreces IP que tinguin accés al teu lloc.


  • Per permetre l'accés al teu lloc només a certes IPs:

ErrorDocument 403 http://www.example.org
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123


Les IPs 124.34.48.165 i 102.54.68.123 seran les úniques amb accés a la web.


  • Denegar l'accés al lloc només a certes IPs:

Allow from all
Deny from 145.186.14.122
Deny from 124.15


La IP 145.186.14.122 i la xarxa 124.15.x.x no tindran accés a la web.

 

Control d'accés a carpetes del lloc web

Un ús molt habitual de l'.htaccess és denegar l'accés a algunes carpetes. Pot ser que desitgis deshabilitar totalment l'accés a una carpeta. Un exemple, una carpeta amb llibreries de programació incloses en els arxius principals. En aquest cas, només els arxius principals accediran a ells mitjançant el sistema d'arxius, però no es podrà accedir via web. Simplement has de crear un arxiu .htaccess en aquesta carpeta que contingui el següent codi:

  •  Per deshabilitar per complet l'accés a una carpeta:

#deny all access
deny from all

  • Permetre l'accés des d'una IP específica:

#deny all access
deny from all
allow from 212.267.98.14

  • Permetre l'accés a una franja específica d'IPs (forçat per mitjà de la màscara de xarxa):

allow from 192.168.0.0/24

  •  Bloquejar l'accés a un arxiu específic:

Order allow,deny
Deny from all

 

Llistat de carpetes

També pots utilitzar l'.htaccess per mostrar el contingut d'una carpeta en l'estructura de directoris:

Options +Indexes

  •  Llistat de carpetes, però no vols que es mostrin les icones per defecte:

Options +Indexes
IndexOptions -FancyIndexing

  • També es podria voler evitar el llistat de carpetes:

IndexIgnore *

 

Redirigir peticions amb www.example.org a example.org i a la inversa

Si vols que la teva web es vegi sempre sense www, afegeix el següent codi a l'.htaccess:


RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$
RewriteCond %{HTTP_HOST} !^example\.org$ [NC]
RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]


I a la inversa, que la web es vegi sempre amb www:


RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$
RewriteCond %{HTTP_HOST} !^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://www.example.org/$1 [R=301,L]


On:
example.org podria ser, per exemple, cdmon.com

 

Redirigir web amigable amb SEO

Si has transferit noms de domini o desitges redireccionar a una pàgina específica sense que afecti els resultats dels motors de busca com Google, pots utilitzar el següent codi:


Redirect 301 /d/nomdelarxiu.html http://www.example.org

 

Redireccionar el tràfic web

Si el que desitges és que, si algú intenta accedir a un arxiu en concret, sigui redirigit a un altre fitxer, pots utilitzar la directiva "redirect":


Redirect /fitxer.php http://example.org/rutes_de_les_carpetes/nomdelarxiu.php

 

Redireccionar a connexió segura HTTPS

Si vols redireccionar tot el teu lloc a una connexió segura (HTTPS), això és molt útil si per exemple disposes d'un certificat SSL i vols treballar amb ell.


RewriteEngine On
RewriteCond %{HTTPS} !=on [NC]

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

 

Redireccionar usuaris per fer servir HTTPS en una carpeta en concret

Si només vols redireccionar una carpeta en lloc de tota la web a connexió segura (HTTPS). Per exemple, si tens una botiga en una carpeta fora del teu lloc, cal fer servir el següent codi:


RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} nom_de_la_carpeta
RewriteRule ^(.*)$ https://www.example.org/$1 [R,L]

 

Evitar el hotlinking

El hotlinking consisteix a realitzar un enllaç directe a fitxers, generalment imatges i vídeos, que pertanyen a un altre web. Aquesta pràctica consumeix la transferència del lloc web original de la imatge. Per evitar que et "robin" l'amplada de banda pots configurar l'.htaccess per no permetre el hotlinking.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.org/.*$ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]

 

En l'última línia, s'indica quin tipus de contingut (s'escull en funció de l'extensió dels arxius) no vols que t'agafin amb la següent regla.


RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]


O bé aquesta altra regla que a més et mostra un arxiu (no_robar_ample_de_banda.gif que has d'haver creat prèviament) d'advertiment que la imatge ha estat agafada del teu lloc web.

 

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/IMG/no_robar_ample_de_banda.gif$
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.org/.*$ [NC]
RewriteRule .*(gif|jpe?g|png|bmp)$ http://example.org/IMG/no_robar_ample_de_banda.gif [NC,R,L]

 

A l'última línia has de posar les extensions dels fitxers que no vols permetre que siguin enllaçats i la imatge d'advertiment que vulguis.

 

Canviar la pagina per defecte

Pots fer que la pàgina d'índex que es mostra del teu lloc no sigui la coneguda "index". Amb aquesta instrucció fixa la pàgina "about.html" com a pàgina d'inici:


#Serve Alternate Default Index Page
DirectoryIndex about.html

 

Forçar la cache del teu lloc web

El següent codi no incrementa directament la velocitat de càrrega del lloc web en general, però sí que carrega més de pressa quan el mateix usuari torni a visitar el web, aquest envia un status 304 quan li demanen quins elements no han estat modificats. Pots canviar la freqüència de refresc al canviar el nombre de segons (en aquest exemple es troba configurat un cop al dia):


FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"

 

Millorar la compatibilitat dels caràcters

Aquesta opció és per aquelles webs que no utilitzen el joc de caràcters estàndard reconeguts pel servidor, amb aquesta mesura evites que es mostri mai el famós error 500.

AddDefaultCharset utf-8

Crear URL amigables

Una URL amigable consisteix a "disfressar" una URL plena de paràmetres perquè quedi més elegant i per ajudar també a tenir una millor posició de la pàgina als cercadors. Segons com estigui programada la web, el tipus de codi que hauràs d'utilitzar serà un o un altre.

 

  • Exemple 1:

Per exemple, "carpeta/fitxer.php?id=120&idioma=es" és una URL no amigable, per tant  l'has de transformar en "carpeta/fitxer/120/es", que és més elegant i ajuda al posicionament dels cercadors. És una URL amigable. Amb el fitxer .htaccess pots realitzar aquesta "disfressa" per a l'URL.


Tens una carpeta a la web que té un fitxer al qual li passen paràmetres:


example.org/carpeta/fitxer.php?id=25


Llavors, dins aquesta carpeta crees un .htaccess amb el següent codi:


Options +FollowSymLinks
RewriteEngine on
RewriteRule carpeta/(.*)/(.*).php$ /carpeta/fitxer.php?id=$1


A l'última línia és on es realitza el canvi.


(.*) serà el paràmetre que li passarem, $1.

(.*).php$ serà el nom del fitxer per "decorar" la URL


Una vegada creat l'.htaccess, a l'enllaç de la web hi poses:


Enllaç al fitxer 25


Per tant, carpeta/25/nom-del-fitxer.php serà el mateix que /carpeta/fitxer.php?id=25

 

  • Exemple 2:

Si la teva web utilitza una URL com la següent "http://www.example.org/index.php?parametre=blog", pots convertir-ho a "http://www.example.org/blog".


Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ /index.php?parametre=$1 [QSA,L]


  • Exemple 3:

Un altre exemple de conversió a URL amigable.

Convertir l'URL "http://www.example.org/index.php?parametre=blog&paginador=12345" a "http://www.example.org/blog/pagina-12345".


Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/pagina-([0-9]+)$ /index.php?parametre=$1&paginador=$1 [QSA,L]


  • Exemple 4:

Codi que utilitza el WordPress per realitzar URL amigables.


RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

 

 

Per a més informació, pots contactar amb nosaltres.