Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30

Discussione: rewrite non funziona

  1. #1

    rewrite non funziona

    Ragazzi sto provando la funziona rewrite, ma non mi funziona e non capisco il perchè, ho creato il file .htaccess con la seguente stringa:

    RewriteEngine On
    RewriteRule ^guide/([^/]+).html g_guide.php?id=$1 [L]

    la pagina che riceve l'id è g_guide.php.
    Io ho messo il file .htaccess nella cartella all'interno del mio sito, ma non cambia nulla, l'url mi rimane sempre:
    www.nomesito.it/cartella/g_guide.php?id=120

    non cambia, perchè??

  2. #2
    prova così

    codice:
    RewriteEngine On
    RewriteRule /guide/([^/]+).html /guide/g_guide.php?id=$1 [L]
    in pratica devi mettere il percorso a partire dalla root
    ad esempio se abbiamo un link di questo tipo

    /cartella/sottocartella/file.php?id=5

    e volerlo trasformarlo così

    /cartella/sottocartella/file5.html

    per fare il rewrite si fa

    codice:
    RewriteEngine On
    RewriteRule /cartella/sottocartella/([^/]+).html /cartella/sottocartella/file.php?id=$1 [L]

  3. #3
    Ho copiato quello che hai scritto, ma non va... ma perchè che cosa può essere sbagliata?

  4. #4
    Stai attenta che il file .htaccess NON DEVE cambiare l'indirizzo.
    Il file .htaccess detta solo delle direttive per riconoscere l'url ed altro ma di certo non ti cambia i link delle ancore html.

    quindi se tu nella tua pagina html hai un <a href="{percorso}/articoli.php?id=5"> e nel tuo file htaccess hai messo

    RewriteRule ^articolo-([0-9]+).html$ index.php?id=$1 [L]

    il file htaccess non ti modifica il collegamento che hai definito nell'ancora.
    Questo dovrai farlo tu con magari una classe per riscrivere i collegamenti delle pagine...

    Diversamente il file .htaccess dice "al tuo sito" di trattare l'indirizzo tuosito.tld/articolo-5.html come fosse tuosito.tld/index.php?id=5

  5. #5
    Ah ma quindi non serve solo modifica il file .htaccess, ma in tutte le guide non dico nulla... ma quindi che devo fare per provare questa funzione? cmq tutte le mie pagine vengono richiamate cosi:

    Codice PHP:
    <?php $query=mysql_query("Select * from guide order by id DESC");
    while(
    $array=mysql_fetch_array($query)){?>

    <li class="linea">
    <?php echo "<a href=\" g_guide.php?id=".$array['id']."\"> "?>
    <?php 
    echo stripslashes($array['titolo']) ?>
    </a>

    <?php ?>
    Questa pagina viene contenuta all'interno di una cartella chiamata guide, quindi l'url quando richiamo una guida si vede cosi:

    www.nomesito.it/guide/g_guide.php?id=12

    Come posso applicare la trasformazione dell'url?

  6. #6
    Così

    Codice PHP:
    <?php $query=mysql_query("Select * from guide order by id DESC");
    while(
    $array=mysql_fetch_array($query)){?>

    <li class="linea">
    <?php echo "<a href='guide/".$array['id'].".html'>"?>
    <?php 
    echo stripslashes($array['titolo']) ?>
    </a>

    <?php ?>

  7. #7
    Cioè non ne esco più da questa cosa, allora io ho creato il file .htaccess cosi:

    RewriteEngine On
    RewriteRule guide/([^/]+).html/g_guide.php?id=$1 [L]

    la pagina g_guide.php lo modificata cosi:
    Codice PHP:
    <?php $query=mysql_query("Select * from guide order by id DESC"); 
    while(
    $array=mysql_fetch_array($query)){?> 

    <li class="linea"> 
    <?php echo "<a href='guide/".$array['id'].".html'>"?> 
    <?php echo stripslashes($array['titolo']) ?> 
    </a> 

    <?php ?>
    ma il risultato è questo:
    http://www.nomesito.it/guide/2.html

    Ma mi da "Impossibile trovare la pagina"..
    Non capisco dove sbaglio

  8. #8
    ti da impossibile trovare la pagina perchè tu hai messo

    <?php echo "<a href='guide/".$array['id'].".html'>"; ?>

    mentre in realtà devi mettere

    Codice PHP:
    <?php echo "<a href='guide/".$array['id'].".php'>"?>

  9. #9
    Originariamente inviato da webking2003
    ti da impossibile trovare la pagina perchè tu hai messo

    mentre in realtà devi mettere

    Codice PHP:
    <?php echo "<a href='guide/".$array['id'].".php'>"?>
    assolutamente no ... c'è un errore in ambedue le parti.

    Nel codice che ho citato richiamando l'url che si indica come quello giusto sarà sempre resituito un codice di errore 404 e questo perchè nell'.htaccess si è indicato il rewrite con estensione html.


    Quello corretto è questo:

    Codice PHP:
    <?php $query=mysql_query("Select * from guide order by id DESC"); 
    while(
    $array=mysql_fetch_array($query)){?> 

    <li class="linea"> 
    <?php echo "<a href='guide/".$array['id'].".html'>"?> 
    <?php echo stripslashes($array['titolo']) ?> 
    </a> 

    <?php ?>
    file .htaccess
    [code]
    <Files .htaccess>
    order allow,deny
    deny from all
    </Files>

    RewriteEngine On
    RewriteBase /

    RewriteRule ^guide/([0-9]+).html$ g_guide.php?id=$1 [L]
    [code]

    Se richiami l'url
    http://www.nomesito.it/guide/2.html sarà visualizzato il contenuto riconosciuto dal rewrite se richiami
    http://www.nomesito.it/g_guide.php?id=2 sarà riconosciuto il normale url senza rewrite.

  10. #10
    Non mi funziona cmq e a questo punto sto iniziando ad avere il dubbio che il sito hostato su un hosting windows non ha attivo il mod_rewrite..può essere? ma poi scusate non è apache in questo caso che detta le direttive, che centra l'hosting se lo supporta o no. Non c'è una soluzione dato che ho fatto una esplicita richiesta al mio provider di attivarmi il filtro "ISAPI Rewrite" di IIS, ma la risposta è stata: è instabile e ha problemi di sicurezza.

    Quindi un sito hostato su hosting windows non ha modo di usufruire del mod_rewrite?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.