• 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