/ / URL Rewrite On .htaccess - .htaccess, przepisz

URL Rewrite On .htaccess - .htaccess, przepisz

Próbuję stworzyć regułę przepisywania, która zrozumie

http://example.com/test/1234

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 № 1

Twoja 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.