• Moderatore

    La discriminante è: vecchi URL indicizzati nei motori di ricerca oppure non indicizzati.
    Nel primo caso (vecchi URL indicizzati), i redirect 301 sono indispensabili per prevenire contenuti duplicati; nel secondo caso i 301 non sono indispensabili in quanto il crawler può accedere solo ed esclusivamente agli URL resi pubblici dal webmaster.

    Escludiamo la seguente situazione pazzesca:
    la root del tuo web server è impostata per tutto l'albero (tutte le sottocartelle e i files) a 777 e una direttiva di Apache autorizza il directory listing sulla root del sito.
    In questo caso chiunque può leggere il contenuto di tutti i files presenti sul tuo sito, dunque anche i motori di ricerca. Questo significa che, seppure gli URL originari non risultassero indicizzati, potrebbero comunque esserlo in futuro, e si genererebbero pertanto contenuti duplicati. Sinceramente è una cosa improbabile, i servizi di hosting generalmente lo impediscono.

    Per capire cosa è indicizzato su Google, scrivi nel campo di ricerca:
    site:[nomesito.estensionedominio]

    Per prevenire problemi ti consiglio pertanto il redirect 301 che, visto il tuo htaccess, puoi implementare semplicemente aggiungendo, ad ogni riga di RewriteRule, accanto alla L la dicitura R=301 intervallata da virgola:
    [L,R=301]


  • User Attivo

    Grazie del consiglio: le vecchie url sono tutte indicizzate, per cui ho provato ad aggiungere la dicitura R=301 nel file htaccess su ogni riga di Rewrite Rule intervallata da virgola, come mi hai suggerito. Il problema che ora ho è che mi comprare il seguente messaggio di errore: Forbidden You don't have permission to access ....(nome pagina.php) on this server.

    Da cosa potrebbe dipendere, dove posso avesr sbagliato?


  • Moderatore

    Controlla i permessi sulle cartelle.


  • User Attivo

    Ciao
    grazie ancora e a questo punto ti chiedo se per caso mi sai aiutare anche con questo nuovo ulteriore problema, perchè io non so proprio cosa fare. Ora, ho impostato:

    RewriteRule ^micropali-consolidamento-terreni.php$ tipologia_01.php [L,R=301]

    Ma adesso la pagina risulta irraggiungibile, ossia: 404 Not Found

    Secondo te da cosa può dipendere, dove ho sbagliato?

    L'URL che esce impostando questa regola diventa così: dominio.it/var/www/vhosts/dominio.it/httpdocs/tipologia_01.php

    Davvero non capisco, mi sembra che il codice in .htaccess sia corretto...spero qualcuno mi sappia aiutare.

    Ciao


  • Moderatore

    Ciao,

    la stringa dominio.it/var/www/vhosts/dominio.it/httpdocs/tipologia_01.php ti compare proprio come URL in alto al browser?
    Prova ad inserire la riga

    RewriteBase /

    subito dopo la RewriteEngine e a porre uno slash prima di ogni pagina php nel secondo parametro. Es.:

    RewriteRule ^wellpoint-consulenza.php$ **/**wellpoint_consulenza.php [R=301,L]

    Ultima domanda: il sito risiede in una sottocartella?


  • User Attivo

    Sì l'URL dominio.it/var/www/vhosts/dominio.it/httpdocs/tipologia_01 mi compariva proprio nella barra del browser in alto.

    Così ho provato ad inserire le modifiche che mi hai suggerito, ed infatti il redirect ora funziona, però non funziona più il rewriting: ossia, ora l'URL che mi visualizza il browser è tipologia_01.php e non micropali-consolidamento-terreni.php come io vorrei. Provando poi a scrivere la regola inversa, ossia:

    RewriteRule ^tipologia_01.php$ / micropali-consolidamento-terreni.php [L,R=301]

    il risultato è che ora il rewriting funziona, perchè l'URl in alto mi dà micropali-consolidamento-terreni.php, ma la pagina risulta 404 Not FOund (perchè in effetti un file con quel nome non esiste).

    Se poi provo ad inserire entrambe le regole, ossia:

    RewriteRule ^tipologia_01.php$ /micropali-consolidamento-terreni.php
    RewriteRule ^micropali-consolidamento-terreni.php$ /tipologia_01.php [R=301]

    Si crea un loop.

    Sembra che non riesca a venirne fuori, ma ci sarà pure un modo per reindirizzare la pagine indicizzate a cui si è cambiato nome con URL rewriting?

    Il sito non risiede in sottocartella, ma all'interno della cartella httpdocs presente nella root principale.


  • Moderatore

    @Isotopia said:

    Sembra che non riesca a venirne fuori, ma ci sarà pure un modo per reindirizzare la pagine indicizzate a cui si è cambiato nome con URL rewriting?

    Perché l'URL da chiamare va per primo e la risorsa fisica che risiede sul webserver va per seconda:

    RewriteRule ^micropali-consolidamento-terreni.php$ /tipologia_01.php [L,R=301]

    il primo parametro, quello racchiuso tra il cappelletto e il dollaro è l'url che tu vuoi venga chiamato, ed il secondo è la sua pagina corrispondente sul webserver.
    Per fare SOLO un Redirect 301, senza rewrite, da un url non più esistente, ad un url valido, puoi anche usare

    Redirect 301 vecchio_url nuovo_url


  • User Attivo

    Ok,
    il problema è che se metto:

    RewriteRule ^micropali-consolidamento-terreni.php$ /tipologia_01.php [L,R=301]

    l'URL che mi visualizza il broswer in alto è
    tipologia_01.php, e non
    micropali-consolidamento-terreni.php.


  • Moderatore

    Caro Isotopia,
    ci stiamo incartando, mi sa che mi è sfuggito qualcosa e faccio prima a toccare con mano.
    Se accetti un aiuto rigorosamente gratis et amore dei, inviami via email i parametri di accesso ftp, nel pomeriggio te lo sistemo, poi però postiamo la soluzione qui di seguito.
    Trovi email e tutti i contatti in firma.;)
    F.


  • User Attivo

    Grazie,
    poi sono riuscita a trovare il motico per cui mi incartavo, molto banale: non avevo rinominato fisicamente le pagine - statiche - sul server. Pertanto il browser riceveva due istruzioni opposte, e andava in loop. Pertanto la regola che ho imparato da questa lezione è questa, correggettemi se e dove sbaglio:

      • Se in un sito ci sono URL che vengono generate dinamicamente, allora è bene rinominarle dando istruzioni al browser di URlrewriting+ rediret 301 (il 301 serve per evitare i duplicati)
      • Se invece nel sito le URL da rinominare rappresentano un percorso fisico, allora fare URL rewritin+ redirect non solo è inutile, ma anche dannoso (perchè dalla mia esperienza si crea un loop): la cosa più semplice è rinominare direttamente i file sul server, per poi applicare il redirect al fine di reindirizzare i vecchi URL indicizzati, ora non più disponibili.

    Nel mio caso mi incartavo perchè mi trovavo nella seconda situazione, ma volevo applicare URL rewriting + redirect senza prima rinominare fisicamente i files.

    Se qualcuno ha altre idee in merito ben venga,

    Ciao e grazie per l'aiuto


  • User Attivo

    Se posso condividere la mia esperienza, trovando scomodo e poco gestibile utilizzare l'htaccess per gestire l'url rewrite ho utilizzato questa strategia:
    ho fatto un unica regola nell htaccess che reindirizza qualsiasi chiamata ad.un unico file index.php passando la richiesta via querystring con qualcosa del tipo index.php?request=index.html
    Gestisco 301, not found, e quanto altro serve da php, in questo modo posso articolare in una struttura anche complessa (e usando magari il db) tutta la riscrittura degli url