• User

    Mod_rewrite: riscrittura di link dinamici complessi

    Ciao a tutti, :smile5:

    vorrei chiarire un mio dubbio riguardo le regole di riscrittura (mod_rewrite) da inserire nel file .htaccess.

    Supponendo che il file in questione sia ospitato su un forum, come si può fare in modo che una richiesta del tipo:

    www . mioforum.it/discussione.php?id=356

    sia associata invece al link:

    www . mioforum.it/interazione-php-e-mysql

    Mi spiego: in una tabella di database MySql ho un elenco delle discussioni le cui colonne sono caratterizzate da ID, nome discussione e numero di messaggi postati.

    La pagina discussione.php, in base all?ID che passo mediante $_GET[id], ad esempio 356 mi restituisce la riga:

    356, Interazione php e mysql, 55 (id, nome, messaggi)

    Come potrei impostare una rewrite_rule tale che scrivendo o cliccando sul link:

    www . mioforum.it/interazione-php-e-mysql

    mi ridirezioni alla pagina:

    www . mioforum.it/discussione.php?id=356

    Spero che non sia necessario scrivere una regola per ogni discussione esistente in database...

    Non penso che un forum articolato come GT, ad esempio, effettui la riscrittura dei link con eccessivi oneri computazionali.

    Come al solito, ringrazio anticipatamente chiunque avrà la bontà di rispondermi!

    A presto! :gthi:
    Maino


  • Super User

    Ciao Maino,
    ci sono diverse cose da valutare.
    Un buon punto di partenza potrebbe comunque essere questo:

    link: www . mioforum.it/interazione-php-e-mysql-356

    htaccess:

    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*)-([0-9]*)$ /discussione.php?id=$2
    
    

  • User

    Ciao ayrton2001, :smile5:

    come prima cosa ti ringrazio per la risposta. Dopo il tuo post, ci siamo messi al lavoro ed abbiamo concretizzato quanto segue.

    Adesso digitando:

    www . taff.biz/x/5

    (con "x" uguale a qualsiasi valore) si viene reindirizzati al topic avente id=5. Lo step successivo sarà pertanto tentare di trasformare la "x" nel nome del topic, magari eliminando quel 5 poco SEO-friendly. Suggerimenti?

    Per quanto riguarda le discussioni, digitando:

    www . taff.biz/x/614/46/1

    si viene reindirizzati alla discussione specifica. Anche in questo caso, il valore assegnato ad "x" non influisce sul risultato del reindirizzamento. Discorso analogo per l'id topic (nell'esempio che ti ho fatto è il n°46) che può essere qualunque valore. La cosa strana è che al posto del 46 possiamo mettere qualsiasi valore numerico, ma nulla di più... Pena il non corretto reindirizzamento della discussione.

    Se hai/avete suggerimenti, sono sempre ben accetti.
    Per ora è tutto, grazie e a presto! :gthi:
    Maino


  • Super User

    @Maino said:

    Adesso digitando:

    www . taff.biz/x/5

    (con "x" uguale a qualsiasi valore) si viene reindirizzati al topic avente id=5. Lo step successivo sarà pertanto tentare di trasformare la "x" nel nome del topic, magari eliminando quel 5 poco SEO-friendly. Suggerimenti?

    Eliminare l'id complica la situazione, dovresti fare il rewrite tramite server script, inoltre si può andare incontro a varie problematiche. Io lo lascerei, magari sostituendo "/5" con "-5".

    @Maino said:

    Per quanto riguarda le discussioni, digitando:

    www . taff.biz/x/614/46/1

    si viene reindirizzati alla discussione specifica. Anche in questo caso, il valore assegnato ad "x" non influisce sul risultato del reindirizzamento. Discorso analogo per l'id topic (nell'esempio che ti ho fatto è il n°46) che può essere qualunque valore. La cosa strana è che al posto del 46 possiamo mettere qualsiasi valore numerico, ma nulla di più... Pena il non corretto reindirizzamento della discussione.
    Se la regola è "([0-9]*)" è normale che accetti solo numeri


  • User

    @ayrton2001 said:

    Eliminare l'id complica la situazione, dovresti fare il rewrite tramite server script, inoltre si può andare incontro a varie problematiche. Io lo lascerei, magari sostituendo "/5" con "-5".

    Ciao ayrton2001! :smile5:

    Scusami se non mi sono più fatto sentire, ma desideravo avere qualche novità per non rischiare di tediare chi ci legge. Ieri finalmente abbiamo reso definitive le modifiche alle rules e gli URL ora presentano questa forma:

    taff.biz/nome-topic/x-y-nome-della-discussione/z

    Come vedi abbiamo optato per la strada meno difficoltosa ed abbiamo seguito il tuo consiglio ricorrendo ai "trattini" al posto degli "slash". Questi ultimi, infatti, avrebbero potuto causare anche un'errata interpretazione da parte degli spiders (lo slash generalmente viene interpretato come cartella).

    Sarebbe interessante riuscire a capire se e quanto questi cambiamenti possano incidere in termini SEO. Sicuramente un beneficio in ottica W3C c'è stato come avrò modo di dimostrare in questo thread:

    giorgiotave.it/forum/w3c-usabilita-accessibilita-qualita/132902-2-strani-errori-di-validazione-w3c-cannot-continue-because-previous-errors.html

    Dopo l'introduzione delle rules siamo scesi di diverse posizioni. :sun:

    Per ora è tutto.
    Grazie ancora per i consigli e a presto! :gthi:
    Maino

    PS: Perdonate se non formatto questo post, ma le ultime volte che ho provato a farlo mi sono visto eliminare tutta la formattazione :tongueout:


  • Super User

    Hai fatto un redirect 301 dalle vecchie url alle nuove?


  • User

    Ciao ayrton2001, :smile5:

    no... non lo ho ancora fatto. So che è molto importante per evitare la creazione di contenuti duplicati, tuttavia non mi è ancora molto chiaro come intervenire.

    Hai suggerimenti in merito?

    Pensi sia opportuno agire a livello di Strumenti per WebMasters di Google, oppure implementare qualcosa a livello di php (come suggerito nella vostra guida wiki), oppure ancora pensi sia meglio intervenire sull'.htaccess?

    Grazie mille! :gthi:
    Maino


  • Super User

    Ciao Maino,
    Devi fare un redirect 301 dalle vecchie pagine alle nuove.
    Lo puoi realizzare come preferisci: htaccess oppure php.


  • User Newbie

    @ayrton2001 said:

    Ciao Maino,
    Devi fare un redirect 301 dalle vecchie pagine alle nuove.
    Lo puoi realizzare come preferisci: htaccess oppure php.

    Ciao considerando che ho dei link dinmici con query string e li sto riscrivendo in indirizzi seo friendly, come faccio a fare il redirect 301 da php per non avere doppi link?