mod rewrite non funziona

Ciao a tutti, avrei bisogno di qualche chiarimento riguardo a mod rewrite di apache2.

Premetto che ho letto diverse guide, le ho seguite alla lettera e non funzionano. Volevo chiedere: se io eseguo il rewrite dell'url di un sito dinamico significa che quando premo un link che mi porta ad una pagina dinamica che ha previsto il rewrite, automaticamente sulla barra degli indirizzi del browser mi compare il nuovo indirizzo riscritto, magari un .html, giusto? Significa anche che quando faccio il percorso inverso, cioé digito l'url riscritto di una pagina dinamica il mio browser mi indirizza automaticamente verso la pagina dinamica in questione?

Premetto inoltre che mod rewrite è abilitato (ho controllato il file phpinfo())

Allora io ho il seguente indirizzo dinamico di una pagina php chiamata post.php posizionata all'interno della cartella BLOG (che non è la document root) in locale

http://localhost/astro/blog/post.php?titolo=Primo

e vorrei che diventasse tramite il rewrite:

http://localhost/astro/blog/post/Primo.htm

All'interno della cartella BLOG ho creato il file .htaccess con scritto all'interno il seguente codice:

RewriteEngine On

RewriteRule ^post/([^/]+).html post.php?titolo=$1 [L]

A questo punto apro il browser e provo a navigare verso:

http://localhost/astro/blog/post.php?titolo=Primo

ma sulla barra degli indirizzi non mi compare

http://localhost/astro/blog/post/Primo.htm ma sempre lo stesso indirizzo dinamico con il punto di domanda.

Cosa non funziona? Il codice nel file .htaccess mi sembra giusto

Tra l'altro nella cartella BLOG non ho alcuna cartella post, devo crealrla?

Non so davvero che fare

Se avete qualche idea

Grazie

inviato 8 anni fa
tonicucoz
X 0 X

volevo aggiungere: si tratta di un blog

nel file index_blog.php ci sono una serie di post elencati e sotto ad ogni post c'é un pulsante (un semplice form) che tramite il metodo $_POST manda alla pagina post.php con un parametro (?titolo) dove sono elencati tutti i commenti delle persone legati a quel post (cioé a quel parametro ?titolo)

il form nella pagina index_blog.php è il seguente

echo "<form action=\"post.php\" methon=\"post\">\n";

echo "<input type=\"submit\" value=\"" . $str . "\">\n";

echo "<input type=\"hidden\" name=\"titolo\" value=" . $riga['titolo'] . ">\n";

echo "</form>\n";

dove $riga['titolo'] è il nome del titolo del post

La pagina php legge il parametro ?titolo e va a pescare in un database tutti i commenti legati a quel post costruendo la pagina (che quindi è dinamica) in base al parametro ?titolo  (del post)

Domande: quando dalla pagina index_post.php premo il pulsante per andare nella pagina  post.php?titolo=etc, grazie al file .htaccess dovrei andare alla pagina: post/etc.html, giusto?

Devo modificare anche la pagina index_post?

risposto 8 anni fa
tonicucoz
X 0 X

Il mod rewrite non converte

http://localhost/astro/blog/post.php?titolo=Primo

in

http://localhost/astro/blog/post/Primo.htm

Al contrario, il mod rewrite fa in modo che se un utente richiede questa pagina

http://localhost/astro/blog/post/Primo.htm

invece di richiamare il file Primo.htm (inesistente) viene lanciato il file post.php con parametro titolo=Primo, ovvero si comporta come se fosse stato usato questo URL:

http://localhost/astro/blog/post.php?titolo=Primo

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

cioè se io digito sulla barra degli indirizzi del browser:

http://localhost/astro/blog/post/Primo.htm

dovrei andare alla pagina:

http://localhost/astro/blog/post.php?titolo=Primo

giusto?

Però non funziona.

grazie ciao

risposto 8 anni fa
tonicucoz
X 0 X

Il meccanismo è quello, però non viene eseguito un redirect all'URL modificato, nel browser l'URL visualizzato rimane sempre lo stesso. E' il server web ad interpretare in maniera diversa l'URL richiesto, secondo la conversione che ti ho detto.

Se non funziona allora la RewriteRule è sbagliata  :dunno:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda