Neste artigo, exploraremos os principios fundamentais do uso do ficheiro .htaccess, que é crucial para mellorar o SEO. Este ficheiro garante a correcta indexación das páxinas polos buscadores. Aprenderemos a xestionar as redireccións, a configurar a seguridade e a aumentar o rendemento. Ademais, proporcionaremos consellos sobre como configurar este ficheiro de forma independente.
Por que é necesario .htaccess
O ficheiro .htaccess actúa como unha especie de "control remoto" para os desenvolvedores web dos servidores Apache. Ofrece ferramentas cómodas para axustar varios parámetros e xestionar o comportamento dun sitio web. Cando o acceso directo aos ficheiros de configuración principais do servidor non está dispoñible (como adoita suceder co hospedaxe virtual, por exemplo), .htaccess convértese nunha ferramenta útil para facer os cambios necesarios.
Htaccess adoita localizarse no cartafol raíz do teu sitio ou naqueles cartafoles nos que se necesita unha configuración especial. Por exemplo, se usa WordPress, a configuración pódese facer a través do complemento Yoast SEO, que comentamos no artigo sobre Configurando robots.txt. Noutros casos, abonda con ir ao cartafol necesario e editar o ficheiro .htaccess existente, ou crealo se aínda non se creou.
Configurando o ficheiro .htaccess
301 Redireccionar htaccess
Unha redirección 301 no ficheiro .htaccess pódese comparar cunha redirección permanente nun sitio web. Infórmalles aos buscadores e navegadores de que agora a páxina está permanentemente situada nun novo enderezo e suxire actualizar os marcadores e indexar. Este redireccionamento úsase normalmente cando se move ou elimina unha páxina para conservar a súa clasificación nos resultados de busca e redirixir os visitantes á nova localización.
Para activar as redireccións, cómpre activar o comando correspondente no ficheiro .htaccess:
RewriteEngine on
Despois diso, pode configurar a forma máis sinxela de redirección:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Unha redirección similar usando o RedirectPermanent a directiva ten este aspecto:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Estes son os métodos de redirección máis sinxelos de configurar. Consideremos unha configuración que utiliza outros tipos máis avanzados de redireccións co mod_rewrite módulo:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
Un .htaccess de redirección 302, que indica unha reubicación temporal, atópase con moita menos frecuencia. Aquí tes un exemplo de tal configuración:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Documento de erro da directiva
Esta configuración permítelle controlar o que ve o usuario cando se producen erros HTTP no seu sitio. En lugar da mensaxe de erro estándar, pode mostrar a súa propia páxina, que será máis informativa para o visitante e axudará a comprender o que pasou. Simplemente siga esta sintaxe para usar:
ErrorDocument <error_code> <URL_page>
Por exemplo, a
ErrorDocument 404 /errors/not_found.html
Significa que cando a 404 ocorre un erro, a páxina en /errors/not_found.html abrirase. Os URL absolutos especifícanse de xeito similar:
ErrorDocument 500 http://example.com/errors/server_error.html
Este exemplo indica a visualización do server_error.html páxina http://example.com/errors/ no caso de 500 erro.
Denegar o acceso a un directorio do sitio
O ficheiro .htaccess ten o comando Negar de todos, que axuda a denegar o acceso a determinados cartafoles ou ficheiros do teu servidor web. Isto pode ser útil se queres ocultar información privada ou ficheiros importantes dos visitantes do sitio para garantir a seguridade dos datos.
Para desactivar a listaxe (ver todos os directorios dispoñibles), cómpre engadir a liña:
Options -Indexes
Un exemplo de bloqueo de acceso a un directorio específico é o seguinte:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Do mesmo xeito, pode denegar o acceso a un único ficheiro:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Ou para unha serie de ficheiros por extensión:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Bloqueo de acceso por IP
Bloquear o acceso por IP no ficheiro .htaccess é un método que che permite restrinxir o acceso ao teu sitio web para enderezos IP específicos ou os seus grupos. Isto pode ser útil se queres evitar o acceso ao teu sitio ou ás súas partes específicas para determinadas persoas ou bots non desexados.
O bloqueo dun único enderezo IP faise co comando:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
O bloqueo de varios enderezos IP faise do mesmo xeito duplicando o "Negar de" liña cos enderezos necesarios.
Para bloquear un rango de enderezos IP:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Para permitir o acceso só a IP específicas, engade o código:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Para unha denegación completa de acceso, use a directiva Negar de todos, e para bloquear enderezos por máscara, especifique Denegar a partir do 11.22/XNUMX.
Onde, 11.22 é o enderezo IP máscara.
Bloqueo de visitantes por axente de usuario
O bloqueo de usuarios mediante User-Agent no ficheiro .htaccess é un método para controlar quen pode acceder ao seu servidor web en función da información sobre o navegador que usa o visitante. A cadea User-Agent contén datos sobre o navegador que usa unha persoa para interactuar co teu servidor e, grazas a esta información, podes restrinxir o acceso a determinados usuarios.
A forma máis común de bloquear mediante User-Agent é usar mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
Neste exemplo:
- RewriteCond %{HTTP_USER_AGENT} úsase para comprobar a cadea User-Agent.
- ^Bot1, ^Bot2, ^Bot3 son exemplos de cadeas User-Agent que queremos bloquear. Os modificadores NC indican que a comparación non debe distinguir entre maiúsculas e minúsculas.
- RewriteRule ^.*$ - [F,L] aplícase á solicitude se se cumpre algunha das condicións de RewriteCond. Envía unha resposta co código de estado 403 Prohibido (F) e detén o procesamento das regras (L).
Almacenamento en caché en htaccess
A configuración da caché a través do ficheiro .htaccess axuda a acelerar o teu sitio ao facer que se cargue máis rápido para os usuarios. Funciona así: certos ficheiros, como imaxes, estilos CSS e scripts JavaScript, gárdanse na caché do navegador do usuario despois da primeira carga. Agora o navegador pode usar estes ficheiros desde a caché, en lugar de recargalos desde o servidor cada vez que o usuario visita unha páxina. Isto reduce o tempo de carga e mellora o rendemento do sitio.
Considere un exemplo:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
Para os recursos que se actualizan con frecuencia, por outra banda, é necesario desactivar o caché:
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
Optimización do rendemento do sitio
o mod_deflate mod_gzip módulos en Apache axudan a comprimir a información que o servidor envía aos dispositivos dos usuarios. Isto fai que os ficheiros sexan máis pequenos, o que á súa vez acelera a carga da páxina. Non obstante, é importante lembrar que o soporte e a configuración destes módulos poden variar dependendo do teu servidor.
Exemplo de uso do mod_deflate módulo:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Exemplo para mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
Discutimos as directivas máis utilizadas. Podes familiarizarte con todas as capacidades do ficheiro no ficheiro documentación oficial.
Como comprobar a funcionalidade do ficheiro .htaccess
Para comprobar se o teu ficheiro .htaccess funciona no sitio, podes realizar os seguintes pasos:
- Cambia intencionadamente o ficheiro .htaccess cun erro. Como resposta, o servidor debería dar un erro. Este método mostra se a operación do ficheiro se aplica xeralmente no servidor.
- Comproba a funcionalidade dos cambios específicos que fixeches. Por exemplo, fai un pequeno axuste nun dos parámetros e avalía a presenza de cambios.
- Comprobe o código de estado da páxina se os cambios están relacionados coa resposta do servidor. Como facelo, describimos anteriormente no artigo Códigos de erro HTTP: unha lista completa de erros do servidor.
- Consulte os rexistros do servidor. Mostran todos os erros relacionados co funcionamento do ficheiro .htaccess.
- Realiza probas utilizando servizos ou ferramentas en liña.
É importante entender que para comprobar a funcionalidade do ficheiro .htaccess, non é necesario realizar todos os pasos á vez. Basta con escoller o método máis axeitado da lista e usalo.
Conclusión
Configurar o ficheiro .htaccess é un paso importante para optimizar e protexer o servidor Apache. Exploramos como este ficheiro axuda a xestionar as redireccións, a comprimir o contido e a garantir a seguridade. Unha vez que dominas traballar con .htaccess, obtén unha poderosa ferramenta para mellorar o rendemento e a funcionalidade dos sitios web.