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. Té una gran varietat d'usos i utilitats que ens poden fer servei al nostre web. Al següent tutorial li mostrem algunes de les funcions més utilitzades per l'.htaccess.

 

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

Per crear un fitxer .htaccess, obrim el bloc de notes i introduïm el codi necessari. Guardem el fitxer com a fitxer de text (.txt), per exemple "fitxer_htaccess.txt", i el pugem per FTP a la carpeta on ha d'utilitzar-se. Un cop al servidor, modifiquem el nom del fitxer "fitxer_htaccess.txt" pel de ".htaccess".

L'.htaccess ha de col·locar-se a l'interior de la carpeta on vulguem que tingui efecte. Per exemple, si volem protegir amb contrasenya una carpeta anomenada "privat", col·locarem l'.htaccess dins la carpeta "privat".

 

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 podem necessitar crear una redirecció a la carpeta d'un subdomini des de l'.htaccess. Si volem que en indicar el "subdomini test.exemple.com", per exemple, ens porti a la carpeta "exemple.com/test", hem 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 hem 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 estiguem 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 seu allotjament, desitja 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 tenim el web en una subcarpeta diferent de la carpeta "web", podem 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 nostre lloc.

- Per permetre l'accés al nostre 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 desitgem 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 podra accedir via web. Simplement creem 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é podem utilitzar l'.htaccess per mostrar el contingut d'una carpeta en l'estructura de directoris:

Options +Indexes

 - Llistat de carpetes, però no volem que se'ns 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 volem que el nostre web es vegi sempre sense www, afegim 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 hem transferit noms de domini o desitgem redireccionar a una pàgina específica sense que afecti els resultats del motors de busca com Google, utilitzarem el següent codi:

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

 

Redireccionar el tràfic web

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

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

 

Redireccionar a connexió segura HTTPS

Si desitgem redireccionar tot el nostre lloc a una connexió segura (HTTPS), això és molt útil si per exemple disposem d'un certificat SSL i volem 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 el que desitgem és només redireccionar a una connexió segura (HTTPS) només una carpeta en lloc de tot el web, per exemple, tenim una botiga en una carpeta fora del nostre 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 ens "robin" l'amplada de banda podem configurar el .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'ultima línia, s'indica quin tipus de contingut (s'escull en funció de l'extensió dels arxius) no volem que ens agafin amb la següent regla.

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

O bé aquesta altra regla que a més ens mostra un arxiu (no_robar_ample_de_banda.gif que hem d'haver creat prèviament) d'advertiment que la imatge ha estat agafada del nostre 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 posem les extensions dels fitxers que no volem permetre que siguin enllaçats i la imatge d'advertiment que vulguem.

 

Canviar la pagina per defecte

Podem fer que la pàgina d'índex del nostre lloc a mostrar no sigui la coneguda "index". Amb aquesta instrucció fixem la pàgina "about.html" com a pàgina d'inici:

#Serve Alternate Default Index Page
DirectoryIndex about.html

 

Forçar la cache del nostre lloc web

El següent codi no incrementa directament la velocitat de càrrega del lloc web en general, però sí carrega més ràpid quan el mateix usuari torni a visitar el web, aquest envia un status 304 quan li demanen quins elements no han estat amodificats. Podem 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 aquells webs que no utilitzen el joc de caràcters estàndard reconeguts pel servidor, amb aquesta mesura evitem 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 programat el web, el tipus de codi que haurem 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  la transformarem en "carpeta/fitxer/120/es", que és més elegant i ajuda al posicionament dels cercadors. És una URL amigable. Amb el fitxer .htaccess podem realitzar aquesta "disfressa" per a la URL.

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

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

Llavors, dins aquesta carpeta creem 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ç del nostre web hi posarem:

Enllaç al fitxer 25

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

 

Exemple 2:

Si el nostre web utilitza URL com la següent "http://www.example.org/index.php?parametre=blog", podem 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.

Convertim 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ó, podeu contactar amb nosaltres.