• Super User

    conversione url

    ciao a tutti,

    sono riuscito a creare un file .htaccess con il codice per il mod_rew pero vorrei capire, ora ogni volta che qualcuno clicca sull'url che ho modificato, automaticamente l'indirizzo viene trasformato? oppure devo inserire qualche script nella pagina per far convertire al volo l'indirizzo.


  • User

    spiegati meglio.

    se hai fatto il mod-rewrite di
    pagina.php?re=345666&fkfkkg=44333

    in
    pagina.html

    devi cambiare i link nel sito dalla forma 1 alla forma due.

    anche se hai messo il modrewrite le pagine con la vecchia url continuano ad essere raggiungibili a meno che tu non abbia fatto un redirect 301.

    spero di aver risposto alla tua domanda, o meglio spero di aver capito la domanda.;)


  • Super User

    forse mi sono spiegato male,

    io ho questo url

    pagina.php?id=10

    convertito in

    pagina-10.html

    ora quando clicco sul link pagina.php?id=10 nella barra degli ndirizzi i llink rimane lo stesso, io vorrei cambiasse nel nuovo piu seo friendly.

    dato che le pagine le costruisco al volo come faccio a linkarle?

    io voglio fare come in questo forum oppure come è sul mio blog e l'url viene cambiato in automatico, se devo cambiarli io manualmente mi e impossibile farlo.

    spero di essermi saputo spiegare.


  • User

    @kaisersose said:

    forse mi sono spiegato male,

    io ho questo url

    pagina.php?id=10

    convertito in

    pagina-10.html

    ora quando clicco sul link pagina.php?id=10 nella barra degli ndirizzi i llink rimane lo stesso, io vorrei cambiasse nel nuovo piu seo friendly.

    come ti ho detto per ottenere questo devi fare un redirect 301

    @kaisersose said:

    dato che le pagine le costruisco al volo come faccio a linkarle?

    io voglio fare come in questo forum oppure come è sul mio blog e l'url viene cambiato in automatico, se devo cambiarli io manualmente mi e impossibile farlo.

    spero di essermi saputo spiegare.

    questo dipende da come vengono generate le pagine.
    cms, blog, script personale.....?????

    dici come aggiorni le pagine e potremo essere più chiari.

    se sono in un database per modificarle basta uno scriptino in php per modificare tutti i campi.

    se sono pagine statiche idem.

    con qualche regular expression dovresti cavartela in pochi minuti, anzi un bel str_replace().


  • Super User

    il cms e fatto da me,

    nel senso che non uso nessun cms, sono pagine che vengono create al volo e estraggono i dati da un database,

    il rediret 301 non sono capace di farlo gia sono riusito dopo diversi tentativi a applicare il mod_rew.
    😛
    le pagine sono dinamiche e i dati vengono estratti da un database es:

    articolo.php?articolo=10

    dove articolo e l'id del database

    questa e la struttura del sito che poi sarebbe quello che ho in firma, basta che leggi le pagine degli articoli e capisci subito cosa voglio dire.

    grazie per l'aiuto
    🙂


  • User

    @kaisersose said:

    il cms e fatto da me,

    nel senso che non uso nessun cms, sono pagine che vengono create al volo e estraggono i dati da un database,

    il rediret 301 non sono capace di farlo gia sono riusito dopo diversi tentativi a applicare il mod_rew.
    😛
    le pagine sono dinamiche e i dati vengono estratti da un database es:

    articolo.php?articolo=10

    dove articolo e l'id del database

    questa e la struttura del sito che poi sarebbe quello che ho in firma, basta che leggi le pagine degli articoli e capisci subito cosa voglio dire.

    grazie per l'aiuto
    🙂
    per il redirect 301 dovrebbe essere qualcosa tipo:

    
    Options -MultiViews
    
    RewriteEngine On
    
    RewriteBase /
    
    RewriteRule ^pagina-*.html$  pagina-$1.html
    
    ```questo dovrebbe funzionare, prova e dimmi se va bene
    
    per la modifica dei link devi modificare lo script di gestione in modo che generi i link in maniera identica alle modifiche che hai fatto.

  • Super User

    Ho provato e rprovato alla fine un indirizzo del genere

    pagina.php?articolo=30

    lo convertito in :

    pagina-30.html

    ho modificato lo script php in modo da reindirizzare i nuovi link in modo corretto, mi e bastato inserire il valore dinamico dell'id cosi:

    pagina-$ID.html

    in modo da otttenere sempre l'indirizzo giusto sul server,
    ora pero per quanto riguarda i motori di ricerca, giustamente la prima soluzione e quella ancora inclusa nei motori (pagina.php?articolo=ID)

    quindi dovrei fare un 301 per reindirizzare il motore sulle nuove pagine e quindi non perdere il posizionamento delle pagine vecchie.

    e qua mi fermo perche non sono riuscito a fare il redirect con il 301.

    Conviene farl ogiusto? altrimenti i lmotore indicizza la pagina vecchia oppure mi penalizza l altre, giusto?

    oppure posso lasciare entrambe come sono adesso e non ricevo penalizzazioni o altro?

    Scusatemi l'ignoranza ma sto mod_rew proprio e duro da capire, meno male che c'è il forum e un grazie infinito a osvi per la guida altrimenti col cavolo che usavo sto mod_Rew.
    P.S.: so che articolo-30.html non e la forma semanticamente piu corretta ma e gia un passo in avanti, se riesco a fre il redirect col 301 posso poi provare a fare modifiche piu complesse.

    Grazie per i suggerimenti.


  • User Attivo

    Ciao
    innanzitutto devi modificare il motore che ti genera i link in modo da crearli nella forma articolo-30.html, e questo mi pare di aver capito che lo hai fatto.

    poi devi fare in modo che:

    1. il link articolo-30.html punti allo script vero e proprio pagina.php?articolo=30
    2. evitare che i motori di ricerca perdano i vecchi link e inserire un 301.

    io farei cosi:

    
    RewriteCond %{REQUEST_URI} /articolo-(\d+).html$
    RewriteRule ^articolo-(\d+).html$  pagina.php?articolo=$1 
    
    RewriteCond %{REQUEST_URI} /pagina\.php
    RewriteCond %{QUERY_STRING} ^articolo=(\d+)
    RewriteRule ^.*$  pagina.php?articolo=%1 [R=301, L]
    
    
    ```Probabilmente il secondo gruppo di regole sarà un casino farlo funzionare se non funziona ;)
    fammi sapere 
    
    ciao

  • Super User

    Riecchime!!

    Dopo tantissimi tentativi, sono testardo, sono riuscito a riscrivere tutti gli url del sito trasformando la pagina da

    articolo.php?articolo=10

    a
    10/categoria/titolo-articolo/

    funzionano tutti gli url e ho modificato tutti gli script php in modo da convertire gli url in automatico, praticamente tutto perfetto.
    Ora pero sto impazzendo (e figurati) con il redirect 301

    io avevo fatto cosi

    <?php
    $ID = $row_articoli['ID'];
    $categoria = $row_articoli['categoria'];
    $titolo = $row_articoli['titolo'];
    $titolo = str_replace(" ","-",$titolo);
    $collegamento = 'http://www.miosito.it/' . $ID . '/' . $categoria . '/' . $titolo . '/';
    ?>
    <?
    header("Status: 301 Moved Permanently");
    header("Location: $collegamento");
    exit;
    ?>
    questo codice per creare le 3 variabili e concatenarle per creare una sola variabile($collegamento) che contiene l'url completo. pero ricevo dal browser questo errore:
    **
    Questa pagina non ridireziona in modo corretto
    Firefox ha rilevato che il server sta ridirezionando la richiesta per questo indirizzo in modo che non possa mai essere completata.
    * Questo problema spesso è causato dal blocco o dal rifiuto dei cookie.**

    ho provato a togliere $collegamento e inserire direttamente l'url
    http://www.miosito.it/$ID/$categoria/$titolo/

    ma sempre lo stesso errore, pero se invece metto
    http://www.miosito.it/$ID/
    funiziona solo che giustamente non trova nessuna pagina aquell'indirizzo perche mancano categoria e titolo.

    e un po complicato con htaccess ho rinunciato perche proprio non ci riesco e ricevo sempre errore interno del server.

    cmq il codice htaccess e :
    **RewriteEngine On
    RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ articolo.php?articolo=$1&nomecat=$2&titolo=$3
    RewriteRule ^Guide/([^/]+)/([^/]+)/([^/]+)/$ tutorial.php?id=$1&guida=$2&titolo=$3
    RewriteRule ^([^/]+)/$ categoria.php?cat=$1
    RewriteRule ^([^/]+)/([^/]+)/$ indice.php?guida=$1&nome=$2
    RewriteRule ^Download/([^/]+).html$ indice_down.php?d=$1
    RewriteRule ^Download/([^/]+)/([^/]+)/([^/]+)/$ downloading.php?down=$1&categoria=$2nome=$3
    **
    naturalmente mi riferisco solo alla prima regola sulla pagina articolo.php

    io vorrei farlo in htaccess ma proprio non va....
    Il primo passaggio di google bot e andato, non vorrei perdere il prossimo.
    🙂


  • User Attivo

    In effetti stai creando un loop.

    Sia che uno arrivi dal vecchio indirizzo che dal nuovo va a finire su articolo.php il quale tramite codice php reindirizza al nuovo ed il loop parte perchè l'htaccess riporta nuovante ad articolo.php.

    Per risolvere dovresti reindirizzare solo se nell'url c'è articolo.php

    Una soluzione semplice può essere (verifica prima se ho azzecato la variabile..sono andato a memoria :2:
    [php]
    if (basename($_SERVER['SCRIPT_NAME']) == 'articolo.php') {
    //tua routine di redirect 301
    }
    [/php]
    Ciao


  • Super User

    Scusami,
    ma non ho afferrato molto chiaro il concetto,
    in pratica dovrei fare un if per verificare se nell'url contiene articolo.php e in caso positivo effetuare il redirect con location, giusto?

    ci provo e faccio sapere.
    🙂


  • User Attivo

    esatto 😉


  • Super User

    nulla da fare esegue sempre il loop e non mi visualizza la pagina.
    ci sto impazzendo con questo redirect.


  • Super User

    Scusatemi se ritorno di nuovo sul post e insisto ma sono proprio disperato
    😞

    ho un casino di pagine non esistenti indicizzate su google e se non faccio sto benedetto redirect la situazione degenera, gia ho perso tanto su google.
    😞

    Qualcuno che riesce a aiutarmi ?

    sto impazzendo!!!
    ;(