[PHP] problema url semantici con .htaccess

SebaGravi

Nuovo Utente
4 Apr 2017
6
0
1
34
Ciao a tutti,
Allora ho questo problema:

Io sto realizzando il mio sito che oltre alle pagine statiche avrà degli articoli o degli eventi / news che andrò ad inserire in un database per poi estrarre i dati con una pagina ad esempio articolo.php?id=10.
Io vorrei fare questo: articolo/titolo_articolo.html
Ho pensato così:
Nella pagina articolo.php, come variabile da passare a mysql per recuperare l'articolo, gli passo il titolo dell'articolo al posto dell'id, ovviamente modificato con il - al posto degli spazi.
Poi con .htaccess vado a dirgli appunto che se la url contiene articolo/nome-articolo.html deve virtualmente andare su articolo.php?titolo=titolo-articolo
Ho impostato l'.htaccess così:

RewriteEngine On
RewriteRule ^articolo/(.*)\.html$ articolo.php?titolo=$1 [L]

Ma non funziona, se io creo un link o digito la url del tipo dominio.it/articolo/titolo-articolo.html appare il solito errore 404 di apache, tra l'altro pagina bruttissima che provvederò poi a modificare.

Come mai non mi funziona? Eppure il codice è giusto, ho provato il tutto in locale dove ho appunto il modulo rewrite abilitato ma niente lo stesso. Cosa sbaglio? Grazie a tutti per le risposte!
 
Crea una pagina php sul tuo server e scrivi
<?php phpinfo() ?>
E cerca mod_rewrite per vedere se è caricato

Inviato dal mio ONE A2003 utilizzando Tapatalk
 
Ciao e grazie per la risposta,
Ho controllato, in locale il modulo è caricato, infatti con una ricerca nella pagina lo trovo, ma sul server aruba con hosting linux, con la ricerca non lo trova quindi non è caricato, ma già ieri in anticipo avevo aperto un ticket di assistenza per richiedere il suo caricamento. Ma il problema però è che comunque in locale non mi funziona, cioè se io digito localhost/news/prova-di-inserimento.html, mi dice 404 not found, invece la pagina index.php che contiene appunto la variabile titolo non viene presa in considerazione.

allora io per prova ho questo scenario:

Index.php:
<?php
$titolo=$_GET['titolo'];
echo $titolo;
?>


.htaccess:

RewriteEngine On
RewriteRule accento acuto news/(.*)\.html$ index.php?titolo=$1 [l]

In teoria dovrebbe essere giusto, quindi, apache, dovrebbe capire che, se la url contiene news/dsfsdfdsfs.html deve prendere questo dsfsdfsdfsd e portarmelo in index.php $titolo, ma non lo fa. come mai? In locale il modulo esiste ma non mi funziona, quindi dubito del fatto che in remoto non funzioni perché non esiste il modulo, ma perché in ogni caso non gli piace scritto così.

Ho provato anche a scrivere:
accento acuto news/([a-zA-Z]+)\.html ma niente lo stesso.
aiutoooooo oppure alternativa per ottenere lo stesso risultato? ripeto, io ho delle news che inserisco in un e la pagina news.php contenente la variabile che recuperando l'id della news mi porta lo stesso nel mysql stampandomi i risultati, ora io potrei utilizzare la colonna titolo_news per ricavare la news al posto dell'id, ma vorrei appunto che per i motori di ricerca, i link risultassero con il nome dell'articolo e non con la variabile get.
 
Perdonami avevo letto che in locale ti funzionava :D

Scrivi così
RewriteEngine On
RewriteRule ^([^/]+)\.html$ index.php?titolo=$1 [L]
 

Discussioni simili