Problem z mod_rewrite i nowymi adresami


(Infokurs) #1

mam prostą strone opartą na php z adresami w stylu index.php?strona=nazwastrony

chce na niej wprowadzić przyjazne adresy i mam z tym pewien kłopot.

Jak zrobie prepisywanie przyjaznych adresów to działaok, ale funkcjonują jednocześnie oba adresy i w starej i w nowej formie.

A ja chcę żeby działały tylko te przyjazne to jest by po wpisaniu starego adresu następowało przekierowanie 301 na nowy.

jak daje

RewriteEngine on


RewriteRule ^([a-z]+).html$ index.php?id=$1 [L]

RewriteRule ^index.php?id=([a-z]+)$ $1.html [R=301,L]

to działa przepisywanie przyjaznego adresu ale nie działa przekierowanie. Dlaczego? Jak powinny wyglądać poprawne reguły? Tylu chętnych do pomocy że mam problem z wyborem :frowning: doszłem do takiego momentu

RewriteCond %{query_string} ^id=([a-z]+)$ 

RewriteRule ^index\.php$ /%1.html? [R=301,L]

RewriteRule ^([a-z]+).html index.php?id=$1 [L]

i pojawia się problem że chyba się zapętla

CZy neprawde nikt nie potrafi pomóc?

-- Dodane 21.01.2011 (Pt) 13:06 --

nikt niewie?


(Zbyszekborkowski) #2

Ostatnio również musiałem zrobić takie przekierowanie, ale w moim przypadku także nie działają reguły zbudowane w ten sposób.

Jeśli nikt inny nie podpowie rozwiązania, można zastosować przekierowanie w skrypcie PHP z wysyłaniem odpowiednich nagłówków i sprawdzaniem URL-a wyrażeniem regularnym. To już musi zadziałać.

Tym niemniej, najlepsze byłoby rozwiązanie z użyciem mod_rewrite.