2013-05-16 3 views
4

Мой .htaccess:.htaccess чувствителен к регистру и mod_rewrite

RewriteEngine On 
CheckCaseOnly On 
CheckSpelling On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^Blog/(.*?)$ /Me/profile.php?username=$1 [QSA,L] 

Проблема, когда URL, как это, он работает:

localhost/Me/Blog/ExampleUser 

Но это не работает, когда она как это (обратите внимание на «Ъ» в «блоге» в нижнем регистре):

localhost/Me/blog/ExampleUser 

Я бегу это на новой версии XAMPP. Это странно, что он не работает, хотя у меня есть mod_speling.so в конфигурации PHP.

В чем проблема?

ответ

13

Использование флага [NC] заставляет RewriteRule согласовываться без учета регистра. То есть, не имеет значения, отображаются ли буквы в верхнем или нижнем регистре в согласованном URI.

Попробуйте [QSA,L,NC] вместо этого, так что сравнение in a case-insensitive manner

+0

Вы удивительны! Спасибо за помощь! :) – Cole

0

проблема заключается в том, что правила перезаписи имеют регистр, чувствительный к регистру. Таким образом, ваше правило Rewrite должно быть:

RewriteRule ^[Bb]log/(.*?)$ /Me/profile.php?username=$1 [QSA,L] 

и вуаля вы исправлены.

mod_speling.so НИЧЕГО не имеет отношения к этому.

Смежные вопросы