- Home
- Categorie
- Digital Marketing
- Posizionamento Nei Motori di Ricerca
- Impostazione corretta htaccess per evitare duplicazione home italiano e inglese
-
Impostazione corretta htaccess per evitare duplicazione home italiano e inglese
Ciao a tutti, spiego qual è il mio problema.
Vorrei evitare che si indicizzino vari indirizzi per la home page del sito, quindi voglio evitare che Google veda contenuti duplicati della home page.**Pagine duplicate secondo google
**
http: // w w w . nomesito .com
http: // w w w . nomesito .com/index.php**Ho impostato nel file .htaccess questa direttiva nel file .htaccess:
**
RewriteCond %{THE_REQUEST} ^./index.php
RewriteRule ^(.)index.php$ http: // w w w . nomesito .com/$1 [R=301,L]Tutto ok, tranne che mi genera un problema su questa URL che richiama la home page del sito in inglese:
http: // w w w . nomesito .com/en/index.php
Che viene re-indirizzata in automatico su questa URL (che è un problema per me, mi genera errore per il tipo di percorsi che uso nel sito):
http: // w w w . nomesito .com/en/
Come posso risolvere ? Dove sbaglio ? non ne vengo a capo!
Grazie dell'aiuto.
-
Non ho capito se /en/index.php deve fare redirect oppure no.
-
@Juanin said:
Non ho capito se /en/index.php deve fare redirect oppure no.
No, non deve fare redirect, deve rimanere su /en/index.php
-
Allora devi evitare di usare questo nel match delle REQUEST
^.*/
-
@Juanin said:
Allora devi evitare di usare questo nel match delle REQUEST
^.*/
quindi, qualcosa di questo tipo:
RewriteCond %{THE_REQUEST} index.php
RewriteRule ^(.*)index.php$ http: // w w w . nomesito .com/$1 [R=301,L]o di questo tipo:
RewriteCond %{THE_REQUEST} index.php
RewriteRule index.php$ http: // w w w . nomesito .com/$1 [R=301,L](grazie)
-
In realtà meglio che forzi "inizia con" quindi ^/index.php o ^index.php
-
@Juanin said:
In realtà meglio che forzi "inizia con" quindi ^/index.php o ^index.php
quindi così ?
RewriteCond %{THE_REQUEST} ^/index.php
RewriteRule ^/index.php$ http: // w w w . nomesito .com/$1 [R=301,L]
-
Sì dovrebbe andare, ma non credo ti serva usare il $1.
-
@Juanin said:
Sì dovrebbe andare, ma non credo ti serva usare il $1.
ciao...ho applicato il tuo ultimo consiglio (togliere $1) ma ora si crea il problema inverso, cioè applicando questa regola:
RewriteCond %{THE_REQUEST} ^/index.php
**RewriteRule ^/**index.php$ http: // w w w . nomesito .com/ [R=301,L]ora questo indirizzo (che con la regola iniziale che ho postato funzionava)
http: // w w w . nomesito .com/index.php
non funziona più e non fa quindi il redirect su http: // w w w . nomesito .com/
mentre funziona questo indirizzo (come volevo ottenere fin dall'inizio)
http: // w w w . nomesito .com/en/index.php
che non fa più il redirect (come volevo) su http: // w w w . nomesito .com/en/
Cosa posso fare ?
Sono un po' in difficoltà su questo .htaccess
-
Che strano.
Cmq se tenendo il $1 ti funziona come vuoi...lascialo pure.
-
@Juanin said:
Che strano.
Cmq se tenendo il $1 ti funziona come vuoi...lascialo pure.
Ciao, no non funzionava anche prima che togliessi il $1 ... comunque anche rimettendolo (ho provato) si comporta come se non ci fosse, non cambia nulla ...
La home page italiana
http: // w w w . nomesito .com/index.php
non fa il redirect su
http: // w w w . nomesito .com
mentre la home page inglese
http: // w w w . nomesito .com/en/index.php
rimane correttamente su questa pagina (senza fare il redirect sulla cartella /en/)
DOMANDA: ma se evito di risolvere con l'htaccess e faccio in modo che nel sito non ci siano link (da nessuna parte) alla index.php italiana ma solo alla radice del dominio (http: // w w w . nomesito .com) ?
Se faccio così non risolvo lo stesso evitando che si indicizzi come contenuto duplicato anche la index.php ?
-
Io credo che il problema sia la %REQUEST
Prova come segue se ho ben capito cosa vuoi fare ora.
[PHP]
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php
RewriteRule ^index.php$ / [L,R=301]
[/PHP]
-
@Juanin said:
Io credo che il problema sia la %REQUEST
Prova come segue se ho ben capito cosa vuoi fare ora.
[PHP]
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php
RewriteRule ^index.php$ / [L,R=301]
[/PHP]Sei MITICOOOOOO, funziona!
p.s. visto che sei così bravo con l'htaccess, mi spiegheresti per favore (non capisco) come mai se faccio questo semplice redirect 301 succede questo:
Siccome ho spostato una "sotto-categoria" sotto un'altra "categoria" ho impostato questo semplice redirect 301 così:
redirect 301 /categoria-vecchia/sotto-categoria/ http: // w w w . nomesito .com/categoria-nuova/sotto-categoria/
Ma se clicco il vecchio URL nella serp di Google mi viene mostrato nella barra degli indirizzi questa URL:
http: // w w w . nomesito .com/categoria-nuova/sotto-categoria/?id=sotto-categoria
**E' come se mi "appendesse" nell' URL il nome della "sotto-categoria" associandola come valore ad una variabile "id"
**
Come posso evitare che crei questo URL strano, sbaglio qualcosa nel redirect 301 ?
-
Andrebbe controllato il waterfall.
L'append del parametro avviene dopo che atterri sulla pagina nuova oppure è direttamente già presente nel link in SERP?
-
@Juanin said:
Andrebbe controllato il waterfall.
L'append del parametro avviene dopo che atterri sulla pagina nuova oppure è direttamente già presente nel link in SERP?
(ciao)
No, avviene quando atterro sulla pagina nuova (non è presente nella SERP)
-
Mi incolli esattamente il tuo .htaccess?
-
@Juanin said:
Mi incolli esattamente il tuo .htaccess?
Ecco:
redirect 301 /tavola/bottiglie-e-thermos/ http: // w w w . nomesito .com/idee-regalo/bottiglie-e-thermos/
Il risultato è (se lancio la vecchia URL di cui sto facendo il redirect):
http: // w w w . nomesito .com/idee-regalo/bottiglie-e-thermos/?id=bottiglie-e-thermos
-
Prova ad usare una redirectMatch 301 invece di redirect 301.
-
niente, ho provato sia con il redirectMatch che con il RewriteRule ma nulla ...
-
Prova a mettere il $ alla fine della redirect match.
Giusto per info non è che hai anche altre regole di redirect nell'htaccess?