2013-08-31 21 views
8

Moim celem jest to URL:.htaccess przepisać URL ze znakiem zapytania "?"

component/users/?view=registration 

Do:

registration.html 

.htaccess jest w mysite folderu serwisu.

próbowałem to:

RewriteBase /mysite 
RewriteRule ^component/users/?view=registration$ registration.html$ [R=301,L] 

Ale ja robi praca ...

Kiedy próbuję to:

RewriteRule ^component/users/_view=registration$ registration.html$ [R=301,L] 

działa bardzo dobrze.

Jak mogę rozwiązać ten problem ze znakiem zapytania. Już przeczytałem, że to nie jest część adresu URL (dołączonego). Czytałem, że muszę używać czegoś takiego jak querystring, ale tak naprawdę nie rozumiem składni.

Może ktoś mógłby napisać rozwiązanie tego problemu? Byłoby niesamowite =)

Odpowiedz

21

Trzeba użyć %{QUERY_STRING} do przechwytywania danych ciąg kwerendy:

RewriteCond %{QUERY_STRING} ^view=(.*)$ 
RewriteRule ^component/users/?$ %1.html? [R=301,L] 

Powyższa reguła/stan będzie weź wartość widoku ciągu zapytania i użyj go do utworzenia przekierowania, jeśli pasuje do ścieżki component/users.

+1

dzięki za odpowiedź, ale to nie działa Oto co dostaję: http: //localhost/mysite/registration.html ? view = rejestracja gdy wpisuję: http: // localhost/mysite/części/Users/view = rejestracji masz pomysł jak to można usunąć – Bardock

+1

znakomita? "view = rejestracja?"?! ! Dziękuję, bracie. Działa teraz: D – Bardock

-3
RewriteRule ^component/users/\?view=registration$ registration.html$ [R=301,L] 

Potrzebujesz \, ponieważ? jest częścią wyrażenia regularnego. Aby go użyć jako ciąg u trzeba uciec z \

Linktip: http://ole.michelsen.dk/tools/regex.html

+4

nie działa. Nadal przekierowuje mnie do localhost/mysite/component/users /? View = registration :( – Bardock

Powiązane problemy