mod_rewrite – wymuszenie małych liter w adresie URL

Co prawda adresy URL pozwalają na stosowanie zarówno dużych jak i małych liter ale różne systemy mogą je różnie obsługiwać i może się trafić sytuacja, w której nie zechcemy by np. duże litery w ogóle pojawiały się w adresach URL. Doskonały przykład to mój niedawny wpis: Apache: ograniczenie dostępu dla zalogowanych użytkowników z mod_rewrite i mod_auth_basic.

Zachodzi tam sytuacja, w której katalog użytkownika jest jego loginem małymi literami (bądź dużymi – jak kto woli), a użytkownik wpisując login może użyć zarówno małych jak i dużych liter i tutaj zaczyna się jazda. Można użyć modyfikatora NC (no case), ale to wpłynie tylko na porównania – przepisanie ścieżki na nazwę podaną przez usera (z dużymi i małymi literami) przekieruje do katalogu, którego nie ma (bo jest katalog tylko małymi/dużymi).

I wtedy przyda się taka sztuczka:

RewriteEngine On
RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]

Definiujemy mapę korzystając z wbudowanego w moduł słownika tolower, a następnie jeśli w URL’u występują (w tym przypadku) duże litery to przekierowujemy na URL’a z małymi.

One thought on “mod_rewrite – wymuszenie małych liter w adresie URL”

Leave a Reply

Your email address will not be published. Required fields are marked *