Utilia

Generador de redireccions .htaccess

Genera redireccions 301 i 302 per a .htaccess o Nginx, força HTTPS i www, mou un domini i arregla les barres finals, amb detecció de bucles i cadenes.

Servidor
Tipus de redirecció
Adreça canònica
Barra final
Mou tot el domini

Fes primer una còpia de seguretat de la configuració actual i prova amb 302 abans de passar a 301: els navegadors desen les redireccions permanents a la memòria cau.

Comprovacions

Com fer servir el generador de redireccions .htaccess

  1. Tria el Servidor: Apache (.htaccess) o Nginx, i després el Tipus de redirecció: 301 – permanent o 302 – temporal.
  2. A Redireccions de pàgines (una per línia: camí antic, després URL nova), escriu una redirecció per línia: el camí antic, un espai i la URL nova, per exemple /pagina-antiga.html /pagina-nova/. També funcionen un tabulador, una coma o ->, i pots enganxar URL antigues completes o línies Redirect 301 /a /b que ja tinguis.
  3. Si vols, escriu El teu domini (opcional) (per exemple example.com) perquè les redireccions de pàgines apuntin directament a l’adreça final.
  4. A Adreça canònica, marca Força HTTPS i tria Força el www, Treu el www o Deixa el www tal com és. A Barra final, tria si l’afegeixes o la treus.
  5. Si tot el lloc s’ha mogut, omple Mou tot el domini amb el Domini antic i l’Adreça nova (URL absoluta), i deixa marcat Conserva el camí perquè cada pàgina vagi a la seva equivalent.
  6. Llegeix les Comprovacions i després Copia o Baixa les regles. Fes servir Carrega un exemple per veure una configuració completa.

Tot passa al teu navegador: res del que escrius s’envia a cap servidor.

Com funcionen les regles generades

Per a Apache, l’eina escriu regles mod_rewrite, començant per un únic RewriteEngine On. Cada pàgina esdevé un RewriteRule amb un patró que comença per ^/?, de manera que funciona tant en un fitxer .htaccess (on s’elimina la barra inicial) com en un bloc <VirtualHost>. Els punts, claudàtors, signes més i altres caràcters d’expressió regular dels teus camins s’escapen, i un espai es converteix en \x20. A la URL nova s’escapen $ i %, perquè Apache els llegiria com a referències enrere, i la bandera NE evita que Apache codifiqui la URL per segona vegada.

Un RewriteRule no veu mai la cadena de consulta. Quan una adreça antiga en conté una, com /producte.php?id=42, l’eina afegeix una línia RewriteCond %{QUERY_STRING} ^id=42$ i la bandera QSD, de manera que els paràmetres antics es descarten en lloc de copiar-se a la pàgina nova.

Les regles s’ordenen per evitar salts innecessaris: primer el canvi de domini, després les redireccions de pàgines, després la barra final i, finalment, HTTPS i www. HTTPS i www es gestionen amb una sola regla, així que http://www.example.com va a https://example.com amb una única redirecció. Quan es coneix el teu domini, les redireccions de pàgines i de barra ja apunten a l’adreça final HTTPS.

Per a Nginx, HTTPS, www i els canvis de domini esdevenen blocs server separats amb return 301, i les redireccions de pàgines es converteixen en línies rewrite que has d’enganxar dins del teu bloc server principal. S’executen abans de la selecció de location, de manera que també prevalen sobre la regla de la barra final. Un ? al final de la destinació impedeix que Nginx afegeixi l’antiga cadena de consulta quan no toca.

Comprovacions que es fan

  • Una pàgina que es redirigeix a si mateixa, o dues pàgines que es redirigeixen mútuament (un bucle que acaba amb «massa redireccions»).
  • Cadenes com A → B → C: fes que A apunti directament a C, perquè cada salt addicional alenteix els visitants i malgasta pressupost de rastreig.
  • La mateixa adreça antiga llistada dues vegades, quan només s’aplicaria la primera regla.
  • Una destinació que no és ni una URL absoluta ni un camí que comenci per /, o una destinació http:// o amb el www equivocat al teu propi domini.
  • Una configuració de barra final que tornaria a redirigir una destinació o la retornaria a l’origen.

Preguntes freqüents

He de fer servir 301 o 302?

Fes servir 301 quan el canvi sigui permanent: els cercadors transfereixen els senyals de la pàgina antiga a la nova i n’actualitzen l’índex. Fes servir 302 per a canvis temporals, com un manteniment o una campanya curta. Els navegadors desen les redireccions 301 a la memòria cau, així que prova primer amb 302.

On poso el fitxer .htaccess?

A la carpeta arrel del lloc (sovint public_html o www), al costat d’index.php o index.html. La baixada es diu htaccess.txt; canvia-li el nom a .htaccess, o enganxa les regles al principi del fitxer que ja tinguis. Guarda una còpia de seguretat de l’original.

Per què RewriteRule i no Redirect 301?

Les línies Redirect provenen de mod_alias i s’executen en una fase diferent de RewriteRule. Barrejar-les en un mateix fitxer fa que l’ordre sigui difícil de predir. Si només fas servir mod_rewrite, totes les regles segueixen una única seqüència previsible i es poden filtrar cadenes de consulta.

El meu lloc mostra «massa redireccions» després de forçar HTTPS. Per què?

Darrere d’un balancejador de càrrega, una CDN o un servidor intermediari que acaba l’HTTPS, Apache veu totes les peticions com a HTTP simple, de manera que %{HTTPS} sempre és desactivat. En aquest cas, comprova la capçalera reenviada, per exemple RewriteCond %{HTTP:X-Forwarded-Proto} !https, o activa la redirecció a la CDN.

Aquesta eina canvia el meu servidor?

No. Només genera text al teu navegador. No s’envia res enlloc i tu controles on i com s’instal·len les regles.