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. Si has fet una migració de domini recentment es possible que hagi de fer canvis també.
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 a carpetes del lloc web
Redirigir peticions amb www.example.org a example.org i a la inversa
Redirigir web amigable amb SEO
Redireccionar a connexió segura HTTPS
Redireccionar usuaris per fer servir HTTPS en una carpeta en concret
Forçar la cache del nostre lloc web
Millorar la compatibilitat dels caràcters
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] [R=301,L]
RewriteRule ^$ carpeta [L]
On:
exemple.org\.org seria, per exemple, cdmon.com\.com
carpeta seria, per exemple, wordpress
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
Require all denied
Require ip 124.34.48.165
Require ip 102.54.68.123
Les IPs 124.34.48.165 i 102.54.68.123 seran les úniques amb accs a la web.
- Denegar l'accés al lloc només a certes IPs:
Require all granted
Require not ip 145.186.14.122
Require not ip 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
Require all denied
- Permetre l'accés des d'una IP específica:
#deny all access
Require all denied
Require ip 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):
Require ip 192.168.0.0/24
- Bloquejar l'accés a un arxiu específic:
Require all denied
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
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/otros/nuevofichero.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 segent codi:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} nom_de_la_carpeta
RewriteRule ^(.*)$ https://www.example.org/$1 [R,L]
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_ancho_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.
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
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?parametro=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?parametro=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.