[Tecnica] url rewriting

Martino di Filippo puntodifuga a gmail.com
Mer 16 Ago 2006 09:36:32 BST


La regola che ti ho scritto prevedeva un id numerico, con "mondo" non può
funzionare.

RewriteRule test/([^\.]+)\.html test.php?id=$1
dovrebbe andare.

Il file .htaccess è nella stessa directory di test.php vero?
E, per scaramanzia, i permessi sul file test.php sono corretti? Cioè, apache
può accedervi?

Martino

On 8/16/06, Massimo Sandolo <bastilani a email.it> wrote:
>
>
> Il giorno 15/ago/06, alle ore 23:41, Martino di Filippo ha scritto:
>
> Ho capito dove sta il problema.
> Inoltre, c'è almeno un errore, seppur triviale, oltre al fatto che non
> capisco bene l'uso di [^/] (perchè mai usare "un carattere diverso da /"
> quando l'id non è terminato da "/"? visto che l'url è nella forma
> test/ID.html, sarebbe più corretto usare [^\.]+\.html)
>
>
> questo tipo di regola l'avevo presa da un tutorial su un forum, che era
> data come prova per verificare il funzionamento del rewrite.. non mi sono
> soffermato troppo sulla correttezza dell'espressione :P
>
> Comunque, venendo al nocciolo della questione, il browser mostra il nuovo
> indirizzo perchè stai dando un url completo di http:// come rewrite,
> dovresti usare un url relativo alla directory corrente:
>
> RewriteRule test/(\d+)\.html text.php?id$1
>
>
> ok, in effetti tutti fanno riferimento a questo tipo di regole (senza url
> completo), però in realtà se non specifico l'url completo lui mi da un 404.
> Cmq con la tua regola chiedendo la pagina
> http://localhost/~massimo/prova_rewrite/test/mondo.html<http://localhost/%7Emassimo/prova_rewrite/test/mondo.html>
> ottengo:
> Not Found
> The requested URL /~massimo/prova_rewrite/test/mondo.html was not found on
> this server.
>
>
> invece con la regola precedente:
> RewriteRule test/([^/]+).html test.php?id=$1 [L]
>
> richiamando: http://localhost/~massimo/prova_rewrite/test/mondo.html<http://localhost/%7Emassimo/prova_rewrite/test/mondo.html>
> mi restituisce:
> Not Found
> The requested URL /Users/massimo/Sites/prova_rewrite/test.php was not
> found on this server.
>
> nel primo caso non riscrive, nel secondo invece il path sarebbe corretto
> perchè il file test.php è proprio in quella directory, solo che lo traduce
> in path e non in url
>
> (Nota che il . prima di html, se non preceduto da un backslash, indica "un
> carattere qualsiasi" e non un punto effettivo. L'espressione funziona
> comunque perchè un punto è "un carattere qualsiasi", ma tanto vale essere
> precisi.
> In più, visto che gli id sono numerici, puoi usare \d+ (che indica una
> serie di cifre) al posto di [^/]+.)
>
>
> capito!
>
>
> Spero che sia tutto chiaro!
> Martino
>
>
> byez
> max
>
> _______________________________________________
> Tecnica mailing list
> Tecnica a liste.siena.linux.it
> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://liste.siena.linux.it/pipermail/tecnica/attachments/20060816/cb061893/attachment.html


Maggiori informazioni sulla lista Tecnica