• Admin

    In realtà meglio che forzi "inizia con" quindi ^/index.php o ^index.php


  • User Attivo

    @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]


  • Admin

    Sì dovrebbe andare, ma non credo ti serva usare il $1.


  • User Attivo

    @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 :arrabbiato:


  • Admin

    Che strano.

    Cmq se tenendo il $1 ti funziona come vuoi...lascialo pure.


  • User Attivo

    @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 ?


  • Admin

    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]


  • User Attivo

    @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 ?


  • Admin

    Andrebbe controllato il waterfall.

    L'append del parametro avviene dopo che atterri sulla pagina nuova oppure è direttamente già presente nel link in SERP?


  • User Attivo

    @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)


  • Admin

    Mi incolli esattamente il tuo .htaccess?


  • User Attivo

    @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


  • Admin

    Prova ad usare una redirectMatch 301 invece di redirect 301.


  • User Attivo

    niente, ho provato sia con il redirectMatch che con il RewriteRule ma nulla ...


  • Admin

    Prova a mettere il $ alla fine della redirect match.

    Giusto per info non è che hai anche altre regole di redirect nell'htaccess?


  • User Attivo

    @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


  • Admin

    Si devi incollarmi tutto l'htaccess per capire come ti avevo scritto prima.

    Quel redirect avviene a causa di un'altra regola.


  • User Attivo

    @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/
    
    

  • User Attivo

    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


  • Admin

    Ciao.

    Sì lo puoi spegnere utilizzando un'operatore logico che dica !valore.