Sto cercando di fare una regola di riscrittura che capirà
come
http://example.com/test.php?t=1234
Questo è quello che ho adesso e non funziona:
RewriteEngine on
RewriteRule ^test?t=([^/.]+)/?$ http://mywebsite.com/test/$1 [L]
Qualcuno può darmi una mano?
risposte:
2 per risposta № 1Il tuo rewriteRule è indietro nel tuo modo di esseresi suppone che corrisponda a sinistra ciò che si desidera rendere l'url pulito e riscrivere a destra dove si trova il file sul server. Ma anche se non fosse indietro, dovresti sfuggire al carattere del punto interrogativo nel RegExp. Ma poiché è indietro, dovresti usare qualcosa di più vicino a:
RewriteEngine on
RewriteRule ^test/(.*) test.php?t=$1 [L]
1 per risposta № 2
Provare :
RewriteEngine On
RewriteCond %{THE_REQUEST} /test.php?t=([^&s]+) [NC]
RewriteRule ^test.php$ /test/%1? [NC,R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/([^/]+)/?$ /test.php?t=$1 [QSA,L,NC]
La stringa di query non fa parte della corrispondenza nella direttiva della regola di riscrittura, utilizza% {QUERY_STRING} o% {THE_REQUEST} variabili per corrispondere alla stringa della query.