- Home
- Categorie
- Coding e Sistemistica
- Hosting, Server e Domini
- Aiutino per htaccess
-
-
@dmgius84, prova questa:
RewriteRule ^(.+?)/$ https://www.nuovosito.com/pagina/$1.html [R=301,L]
-
Ciao, ecco qui la guida Google https://developers.google.com/search/docs/advanced/crawling/301-redirects?hl=it
-
Quello che ha indicato @dmgius84 è un caso particolare, è difficile trovare una risposta in guide standard.
Bisogna lavorare sulle espressioni regolari.
Io consiglio di partire dalla regola di base che ho indicato nel secondo post e perfezionarla con casistiche varie per renderla più precisa
-
Giusto
Puo usare anche
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /oldpage/ /newfolder/newpage/</IfModule>
Consiglio anche questo strumento online per diversi scenari
https://www.aleydasolis.com/htaccess-redirects-generator/
o questo per più URL
https://www.pixelkicks.co.uk/resources/bulk-301-redirect-generator/
-
Grazie a tutti per le risposte.
Provo a spiegare meglio la situazione.Ho realizzato il nuovo sito su un altro dominio: nuovodominio.com, si tratta di un multilingua che ho strutturato cosi:
Homepage multilingua nuovo
nuovodominio.com/it/
nuovodominio.com/en/
nuovodominio.com/de/
etcPagine interne nuovo
nuovodominio.com/it/servizi/servizio1.html
nuovodominio.com/en/services/services1.html
nuovodominio.com/de/servizien/servizien1.html
etcIl vecchio dominio, vecchiodominio.it, ha invece la seguente struttura:
Homepage multilingua vecchio
vecchiodominio.it <-- questa la versione italiana
vecchiodominio.it/?lang=en
vecchiodominio.it/?lang=de
etcPagine interne vecchio
nuovodominio.it/servizi/
nuovodominio.it/services/?lang=en
nuovodominio.it/servizien/?lang=de
etcVorrei reindirizzare tramite 301 le varie homepage + ogni singola pagina, quindi ad esempio se lo compilo così:
Redirect 301 /?lang=en https://nuovodominio.com/en/
Redirect 301/services/?lang=en nuovodominio.com/en/services/services1.htmlNon funziona correttamente. Questo benedetto "?lang=xx" non so come gestirlo...
-
No, con i parametri di query string non possono funzionare quei redirect.
Per sapere come gestirlo devi, prima di tutto, studiare la documentazione.E' necessario usare le condizioni di rewrite.
Ti faccio vedere alcuni esempi per farti capire come si approccia, ma poi devi trovare il giusto bilanciamento tra le regole del file .htaccess.
Per gestire le le lingue che da parametro diventano directory, ad esempio, puoi provare una regola come questa:
RewriteCond %{QUERY_STRING} ^lang=(.)$
RewriteRule ^(.)$ https://nuovodominio.com/%1/$1/? [NC,L,R=301]Questa risolve sia un redirect di questo tipo:
Da vecchiodominio.com/services/?lang=en a nuovodominio.com/en/services/Sia un redirect di questo tipo:
Da vecchiodominio.com/?lang=en a nuovodominio.com/en/
-
@alepom ha detto in Aiutino per htaccess:
No, con i parametri di query string non possono funzionare quei redirect.
Per sapere come gestirlo devi, prima di tutto, studiare la documentazione.E' necessario usare le condizioni di rewrite.
Ti faccio vedere alcuni esempi per farti capire come si approccia, ma poi devi trovare il giusto bilanciamento tra le regole del file .htaccess.
Per gestire le le lingue che da parametro diventano directory, ad esempio, puoi provare una regola come questa:
RewriteCond %{QUERY_STRING} ^lang=(.)$
RewriteRule ^(.)$ https://nuovodominio.com/%1/$1/? [NC,L,R=301]Questa risolve sia un redirect di questo tipo:
Da vecchiodominio.com/services/?lang=en a nuovodominio.com/en/services/Sia un redirect di questo tipo:
Da vecchiodominio.com/?lang=en a nuovodominio.com/en/Niente, non ne vale la pena allora.
Ti chiedo invece se volessi fare una cosa un po' più rapida ovvero creare un .htaccess per le sole homepage dando ulteriore istruzione che tutte le altre pagine interne rimanderanno alla generica .com. Come dovrei settarlo?Quindi sarebbe:
vecchiodominio.it > nuovodominio.com/it/
vecchiodominio.it/?lang=en > nuovodominio.com/en/
vecchiodominio.it/?lang=en > nuovodominio.com/fr/
vecchiodominio.it?lang=en > nuovodominio.com/de/Poi
"tutte le pagine che non sono istruite" > mandale al nuovodominio.comuna cosa che ho notato poi è che se ad esempio la versione inglese del vecchiodominio.it ha il "?lang=en" la versione italiana è semplicemente vecchiodominio.it, senza "?lang=it" quindi se faccio redirect del solo vecchiodominio.it verso nuovodominio.com ... saltano gli altri.
Comunque, capisco che effettivamente è una situazione complicata... secondo te quale sarebbe la soluzione più rapida?
1 Risposta -
@dmgius84, perché non ne vale la pena?
Con due regole di rewrite fai tuttoSe lo fai fatto bene, non salta nulla, ma posso immaginare perché dici che "saltano": si deve studiare l'ordine delle regole e i flag di Apache: https://httpd.apache.org/docs/2.4/rewrite/flags.html
Il problema, da quello che scrivi, è che non hai mai approfondito l'argomento.Il fatto è che (e probabilmente mi odierai per quello che sto per dire ) la migrazione è un processo serio. E se non viene fatta a regola d'arte si possono provocare dei danni importanti.
Le espressioni regolari che ti ho scritto, sono una base per riuscire a redirigere tutti i tuoi URL con poche istruzioni (grazie all'uso delle variabili).Però non esistono scorciatoie, va studiato bene, e compreso nei principi. Se ci pensi, tu dici "quale sarebbe la soluzione più rapida?". Ma per ottenere cosa? Semplicemente per evitare un 404? Oppure per redirigere tutto correttamente?
-
@alepom Figurati per così poco
Senza dubbio è un processo serio ma converrai che lo è se si deve "trasportare" un considerevole traffico/fatturato... il mio è più un caso diciamo così, di perfezionismo, avrei voluto fare le cose per bene ma se questo implica dover approfondire argomenti che mi interessano poco ritengo non ne valga la pena.Credevo fosse risolvibile chiedendo un piccolo aiuto, ma capisco che la cosa è un po più complicata del previsto.
Quindi escludendo l'approfondimento pensavo semplicemente di comunicare a Google: "vecchiodominio.it e tutte le sue pagine passano su nuovodominio.com, riorganizza tutto tu non ti do nessuna indicazione dettagliata "
E avevo pensato di usare questo nell'htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^vecchiodominio.it$
RewriteRule ^(.*)$ http://nuovodominio.com [R=301,L]Questo intendevo per soluzione rapida..