2012-10-21 14 views
9

Szukałem tego pytania, ale natrafiłem tylko na naprawdę konkretne odpowiedzi, które wydają się trudne do dostosowania do moich konkretnych potrzeb..htaccess przepisać ciąg zapytania jako ścieżkę

Powiedzmy URL Ja próbuje przepisać to:

http://www.example.org/test.php?whatever=something 

Chcę go przerobić tak, że wydaje się, jak to:

http://www.example.org/test/something 

Jak mogę to zrobić?

+2

Oto kilka przykładów: https://wiki.apache.org/httpd/RewriteQueryString –

Odpowiedz

19

W celu trasy prośba jak /test/something wewnętrznie przepisać tak, że zawartość w /test.php?whatever=something serwowane dostaje, byłoby użyć tych reguł w pliku .htaccess w katalogu głównym dokumentu:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?test/(.*?)/?$ /test.php?whatever=$1 [L] 

oraz w celu przekierowania kwerendy ciąg URL do estetyzacja jednym:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /test\.php\?whatever=([^\&\ ]+) 
RewriteRule ^/?test\.php$ /test/%1? [L,R=301] 
+0

Absolutnie doskonałe, dziękuję! – UserIsCorrupt

+0

Jeśli używając powyższego kodu, jeśli ktoś ma problem z ciągiem znaków zapytania, to musi tylko dodać końcowy znak zapytania na końcu ostatniej reguły, tutaj jest zaktualizowany kod 'RewriteCond% {THE_REQUEST}^[AZ] {3, 9} \ /test\.php\?whatever = ([^ \ & \] +) RewriteRule^/? Test \ .php $/test /% 1? [L, R = 301] ' –

+0

Używam tych samych reguł, ale nie działa mój adres URL to http://example.com/directory1/directory2/login.php?id=8 i chcę, aby było jak http: //example.com/directory1/directory2/login/8 proszę mi powiedzieć, jak to naprawić –

Powiązane problemy