dzisiaj rozpocząłem nierówną walkę z mod_rewrite.
Ogarnąłem podstawy wyrażeń regularnych i zasady tworzenia RewriteRule.
Wstęp:
tworzę stronę w php z adresami o takim wzorcu /index.php?lang=en&id=articleid
Chcę do tego stworzyć proste adresy. Dopuszczam taką ich konstrukcję:
www.strona.pl/en/article <- dla strony w innym języku niż domyślny (pl)
www.strona.pl/article <- dla stron w języku polskim - domyślnym
Napisałem dwie reguły
CODE
RewriteRule ^(en|fr|de){1}\/([a-zA-Z-]{3,10})(\.html)?$ index.php?lang=$1&id=$2 [L]
RewriteRule ^([a-zA-Z-]{3,10})(\.html)?$ index.php?id=$1 [L]
RewriteRule ^([a-zA-Z-]{3,10})(\.html)?$ index.php?id=$1 [L]
Pierwsza ma sprawdzać czy sprecyzowano język i czy jest nazwa artykulu. rozszerzenie .html może wystąpić
Druga reguła tworzy link gdy nie sprecyzowano wersji językowej.
Problem:
Przetestowałem te reguły z pomocą http://www.regexp.pl/ i jest ok ale po wrzuceniu tego na serwer przegladarka pozwala rowniez na takie zapisy:
http://www.strona.pl////en///artykul.html
http://www.strona.pl///////artykul.html
Co zrobiłem żle?
Pozdrawiam i dziekuje za sugestie