Domanda

Ho una pagina dinamica chiamata show.php. La pagina è dinamica e l'URL può essere sia show.php?name=john-doe o show.php?category=student.

Sto cercando di creare una regola di riscrittura che trasforma l'URL nella /show/john-doe.html per i nomi o /show/student.html per la categoria.

Questo è quello che ho nel mio .htaccess finora.

RewriteRule ^show/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/([^/]*)\.html$ show.php?category=$1 [L]

Al momento, solo il nome regola funziona ma la regola categoria non lo fa. Che cosa c'è che non va?

È stato utile?

Soluzione

Il problema è che si sta inviando tutto show / xxx.html allo stesso URL (il primo). Dal momento che entrambe le regole di riscrittura stanno utilizzando esattamente lo stesso parametro solo il primo funzionerà.

Si potrebbe risolvere in due modi diversi.

In entrambi si utilizza show.php? Id = xxx e accettare sia il nome e la categoria in PHP e detirmine ci quale pagina da mostrare.

In alternativa si utilizzano due diversi tipi di URL nel vostro riscrittura per ottenere mostra / categoria / student.html e mostra / studenti / John-doe.html in questo modo:

RewriteRule ^show/student/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/category/([^/]*)\.html$ show.php?category=$1 [L]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top