/ / regex w mojej RewriteRule jest OK, ale .htaccess nie działa - regex, apache, .htaccess

regex w mojej RewriteRule jest OK, ale .htaccess nie działa - regex, apache, .htaccess

Mam problem z uzyskaniem mojej .htaccess ReWrite do pracy na moim serwerze WWW Apache. Przeczytałem kilka samouczków i przetestowałem dopasowanie wyrażeń regularnych z Grepem.

Oto kod:

    RewriteRule ?action=viewArticle&articleId=([0-9]*)&categoryId=([0-9])$ essays/$1 [R=301,L]

oto adres URL, który próbuję dopasować:

http://mysite.com/?action=viewArticle&articleId=15&categoryId=1

i zmień na

http://mysite.com/essays/15

AKTUALIZACJA: Rozwiązanie! z bardzo doskonały tutorial od Jona. To było bardzo ważne, że położyłem <base href="/"> w moim pliku nagłówkowym, aby css działał poprawnie.

Ostateczne przepisanie wyglądało następująco:

RewriteCond %{THE_REQUEST} /?action=viewArticle&articleId=([0-9]*)&categoryId=([0-9])
RewriteRule ^$ /essays/%1? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^essays/([0-9]+) /?action=viewArticle&articleId=$1&categoryId=([0-9]) [L]

Odpowiedzi:

2 dla odpowiedzi № 1

Nie można dopasować hostów ani ciągów zapytań w pliku RewriteRule, musisz dopasować do %{HTTP_HOST} i %{QUERY_STRING} zmienne w a RewriteCond dyrektywa:

RewriteCond %{HTTP_HOST} mysite.com$ [NC]
RewriteCond %{QUERY_STRING} ^action=viewArticle&articleId=([0-9]*)&categoryId=([0-9])$
RewriteRule ^$ /essays/%1? [L,R=301]

Spowoduje to przekierowanie przeglądarki (zmiana adresu URL na pasku adresu), gdy ktoś do niej przejdzie http://mysite.com/?action=viewArticle&articleId=15&categoryId=1 do http://mysite.com/essays/15

Nie potrzebujesz tego %{HTTP_HOST} warunek, jeśli plik htaccess obsługuje tylko jeden host.