- Home
- Categorie
- Digital Marketing
- Posizionamento Nei Motori di Ricerca
- Impostazione corretta htaccess per evitare duplicazione home italiano e inglese
-
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?
-
@Juanin said:
Prova a mettere il $ alla fine della redirect match.
Giusto per info non è che hai anche altre regole di redirect nell'htaccess?
Ciao, avevo già provato con il $ ma niente ...
Sì, nell' htaccess ci sono diverse altre regole, scusami se non te l'ho spiegato prima o fatto capire ...
Non ci avevo pensato ...Quindi vuoi vedere, come mi stai suggerendo tu, che magari va in conflitto con ad esempio questa regola (la seconda riga) che riscrive le "sotto-categorie" ?
RewriteRule ^([^/])/$ /categoria.php?id=$1
RewriteRule ^([^/])/([^/]*)/$ /sotto-categoria.php?id=$2
-
Si devi incollarmi tutto l'htaccess per capire come ti avevo scritto prima.
Quel redirect avviene a causa di un'altra regola.
-
@Juanin said:
Si devi incollarmi tutto l'htaccess per capire come ti avevo scritto prima.
Quel redirect avviene a causa di un'altra regola.
Ecco il mio .htaccess:
RewriteEngine On RewriteCond %{HTTP_HOST} ^nomesito .com RewriteRule ^(.*)$ http: // w w w . nomesito .com/$1 [L,R=301] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php RewriteRule ^index\.php$ / [L,R=301] # Pagina 404 ErrorDocument 404 /404.php # Designer e Brand RewriteRule ^Designer/([^/]*)/([0-9]*)$ /designer-selezionato.php?designer=$2 RewriteRule ^Brand/([^/]*)/([0-9]*)$ /brand-selezionato.php?brand=$2 # Scheda prodotto RewriteRule ^([^/]*)/([^/]*)_([0-9]*).php$ /scheda-prodotto.php?id=$3 # Sotto Categoria RewriteRule ^([^/]*)/([^/]*)/$ /sotto-categoria.php?id=$2 RewriteRule ^([^/]*)/([^/]*)/page/([0-9]*)$ /sotto-categoria.php?id=$2&sheet=$3 RewriteRule ^([^/]*)/([^/]*)/page/([0-9]*)/([a-z]*)$ /sotto-categoria.php?id=$2&sheet=$3&by=$4 # Categoria RewriteRule ^([^/]*)/$ /categoria.php?id=$1 RewriteRule ^([^/]*)/page/([0-9]*)$ /categoria.php?id=$1&sheet=$3 RewriteRule ^([^/]*)/page/([0-9]*)/([a-z]*)$ /categoria.php?id=$1&sheet=$2&by=$3 # Redirect 301 redirect 301 /tavola/bottiglie-e-thermos/ http: // w w w . nomesito .com/idee-regalo/bottiglie-e-thermos/
-
Ciao Juanin ... grazie a te, in questo post (nella prima parte), sistemammo l'URL di raggiungimento della versione italiana e inglese del mio sito, cioè:
sito in italiano raggiungibile con la radice del dominio "w w w . nomedominio . com"
sito in inglese raggiungibile con l'URL "w w w . nomedominio . com / en / index.php"Ti ricordi ?
Mi hai aiutato perchè non potevo usare la cartella "w w w . nomedominio . com / en /" perchè a livello di rewriterule mi creava conflitto con l'italiano (ad esempio con i nomi delle categorie raggiungibili con un url simile w w w . nomedominio . com / categoria /)Ora, dannazione, ho scoperto che nella search console di google non posso indicare il target geografico per l'inglese in quanto l'URL fa riferimento ad un file e non ad una cartella.
Cioè quando gli provo a dare l'URL "w w w . nomedominio . com / en / index.php" mi dice che è errato in quanto fa riferimento ad un file e non ad una cartella.
Come posso risolvere secondo te ?
Non c'è un modo per "spegnere" il rewriterule solo per la cartella "en" (la radice) e non tutti i suoi contenuti, tipo "w w w . nomedominio . com / en / products / table" ?Ciao e grazie
-
Ciao.
Sì lo puoi spegnere utilizzando un'operatore logico che dica !valore.