Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Mod rewrite con wndows e apache.

    Sto cercando di far funzionare mod rewrite su windows con apache per fare delle prove in locale ( se può essere utile sto usando easyphp ).
    Ho modificato il file httpd.conf cacciando il commento dalla riga:LoadModule rewrite_module modules/mod_rewrite.so
    e guardando le info di php pare che il modulo venga effettivamente caricato.
    Ora nella cartella www ho creato un file .htaccess ( per crearlo su win è stato necessario andare nel notepad e salvare il file come ".htaccess" virgolette comprese ) e ho inserito, come suggerito in una pillola di html.it le seguenti regole:
    codice:
    RewriteEngine On
    RewriteRule ^index/([^/]+)/([^/]+).html index.php?page=$1&id=$2 [L]
    Poi ho creato un file index.php giusto per vedere se funziona:
    codice:
    <?php
    print($_GET['id']);
    ?>
    Dopo aver chiuso apache lo riapro, digito nel browser http://localhost/index/notizie/69.html ed esce la famigerata schermata 404.
    Che devo fare per farlo funzionare?

  2. #2
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    In realtà dovresti fare qualcosa di più articolato per farlo funzionare...Ad esempio come prova puoi fare:

    Codice PHP:
    <?php
    if(isset($_GET['id']))
       echo 
    'Entro con id settato';
    else
       echo 
    'Entro in index senza id settato';
    ?>
    Salvi il file index.php e provi a lanciarlo dal browser; ti esce la scritta Entro in index senza id settato. Poi provi a lanciarlo, ad esempio con index.php?id=1 e dovrebbe apparirti la scritta Entro con id settato. Passiamo ora al mod rewrite. Il tuo file deve essere del tipo:

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

    Come hai fatto tu non funzionava perchè nella regola del passi una pagina con 2 parametri, quando tu ne hai dichiarato solo uno (id)...è molto più semplice di quello che pensi. Comunque prova a fare questa prova...per vedere se funziona, alla fine prova a scrivere nel browser http://localhost/prova/1.html, che è l'url riscritto secondo la regola da te passata.



  3. #3
    Prova questa:
    RewriteEngine On
    RewriteRule ^/?index/([a-zA-Z_\-]+)/[0-9]+\.html index.php?page=$1&id=$2 [L]

    request

    http://localhost/index/notizie/69.html

    a parte che quel index lo toglierei e cioè
    RewriteEngine On
    RewriteRule ^/?(notizie)/[0-9]+\.html index.php?page=$1&id=$2 [L]

    request

    http://localhost/notizie/69.html


    ti consiglio questo ottimo articolo.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Sorry

    RewriteEngine On
    RewriteRule ^/?(notizie)/([0-9]+)\.html index.php?page=$1&id=$2 [L]
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Grazie per l'aiuto, ma anche provando con il test più semplice possibile non funziona: RewriteEngine on
    RewriteRule ^/?test\.html$ test.php [L]
    Mi viene da pensare che il file .htaccess nemmeno venga letto.

    C'è qualche modo di vedere nei file di log se apache ha effettivamente letto il file .htaccess?

    EDIT: Ci credete che mi ero dimenticato di settare AllowOverride a All?
    Ora funziona; l'unica curiosità che vorrei soddisfare è come e dove va utilizzata la direttiva RewriteLog.
    Oltre a questo vorrei sapere come rendere una regex non greedy ( in javascript o php ad esempio mi basta mettere un ? ).

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.