• User Attivo

    Tre domande (o meglio domanda tripla)

    Salve a tutti e scusate la banalità delle seguenti tre domande.

    1. E' possibile fare un rewrite da un indirizzo del tipo nomesito/nome_pagina a nomesito/nome_pagina.html?
      (faccio notare che il primo indirizzo è il permalink standard ottenuto con wordpress per archivi di categorie e pagine; si tratta quindi di pagina in php)

    2. In caso la risposta precedente sia sì, come è la sintassi dell'istruzione da inserire nell'.htaccess?

    3. Sempre in caso la risposta 1) sia sì, la pagina risultante, pur avendo estensione .html, viene interpretata egualmente come php?


  • Super User

    ciao,

    quello che chiedi è chiaramente possibile, eccoti un esempio:

    
    RewriteRule ^nomesito/(.*).php$ nome_pagina.php
    
    

    chiaramente la regola sopra scritta ha poco senso ma stiamo parlando in astratto e quindi serve solo come esempio.

    Il problema più grosso nell'usare l'url rewrite con dei cms già fatti è che questi hanno nelle loro pagine la generazione di link con query string e non li generano come serve a noi.

    faccio un esempio per spiegarmi:

    la pagina fisica è articolo.php

    il parametro id consente di estrarre un dato articolo dal db e stamparlo nella pagina quindi se voglio stampare a video l'articolo con id 3 chiamerò:

    articolo.php?id=3

    ora usiamo l'url rewrite con una regolina semplice

    
    RewriteRule ^articolo_([0-9]+).htm$ sezione.php?id=$1
    
    

    con questa regola se chiami la pagina

    nomesito.it/articolo_3.html

    in realtà risponde la pagina articolo.php?id=3 e fin qui tutto bene. Ora vediamo il problema dei cms che dicevo prima. Mettiamo che in home page ci sia un link verso questo articolo, questo link come è scritto?
    se è scritto <a href="nomesito.it/articolo.php?id=3">nome dell'articolo</a> così resterà e chiaramente se ne frega di tutte le regole che sono scritte nell'htaccess. Un utente che visita il tuo sito e usa quel link chiamerà la pagina articolo.php?id=3 e quindi anche il bot di un mdr farà lo stesso.

    Quindi se vuoi usare la riscrittura degli indirizzi devi controllare che il tuo sito generi link nella forma corretta in relazione alle regole che hai nel file htaccess


  • User Attivo

    Anzitutto grazie di cuore a Tymba per la risposta ricca e articolata.
    Rileggendo tutto più e più volte temo di aver fatto un errore concettuale nella mia domanda 1).

    Infatti la domanda corretta non è

    "E' possibile fare un rewrite da un indirizzo del tipo nomesito/nome_pagina a nomesito/nome_pagina.html?"

    ma (forse) l'esatto contrario, ossia

    "E' possibile fare sì che l'indirizzo nomesito/nome_pagina.html (alias la pagina fittizia) conduca a nomesito/nome_pagina/ (alias la pagina reale)?"

    Questo secondo indirizzo, effettivamente, è nomesito/nome_pagina/index.php o (più verosimilmente) nomesito/nome_pagina/archive.php.

    Ma forse anziché l'url rewrite mi basterebbe un redirect...?


    Credo poi di aver letto con attenzione il resto, ma la prima regola che hai postato mi lascia qualche dubbio. La regola mi pare faccia un rewrite da un indirizzo con estensione .php a un altro indirizzo anch'esso con estensione .php, o sbaglio?


    Quanto alla generazione degli URL da parte del CMS che ho in uso (wordpress) credo di aver compreso il problema che mi segnali, ma non ho invece compreso nel mio caso specifico come vengano creati i link "naturali" dal cms (anche per via di cartelle e sottocartelle, url rewrite già presente, plugin che rimodificano il tutto etc.).

    Ad ogni modo, con l'url rewrite operante, ponendo che il cms generi un link al vecchio indirizzo "reale", questo non viene automaticamente rediretto all'indirizzo "virtuale"?