Próbuję stworzyć regułę przepisywania, która zrozumie
tak jak
http://example.com/test.php?t=1234
To właśnie mam teraz i to nie działa:
RewriteEngine on
RewriteRule ^test?t=([^/.]+)/?$ http://mywebsite.com/test/$1 [L]
Czy ktoś może mi pomóc?
Odpowiedzi:
2 dla odpowiedzi № 1Twoja przepisana od nowa jest cofnięta w tym, że jesteśpowinien pasować po lewej stronie, jak powinien wyglądać czysty adres URL i przepisać po prawej stronie, gdzie plik znajduje się na serwerze. Ale nawet gdyby nie było odwrotu, musisz uciec z znaku zapytania w regeksie. Ale ponieważ jest wstecz, powinieneś używać czegoś bliżej do:
RewriteEngine on
RewriteRule ^test/(.*) test.php?t=$1 [L]
1 dla odpowiedzi nr 2
Próbować :
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]
Łańcuch zapytania nie jest częścią dopasowania w dyrektywie przepisywania reguł, użyj zmiennych% {QUERY_STRING} lub% {THE_REQUEST}, aby dopasować je do ciągu zapytania.