Все URL на * nix серверах чувствительны к регистру. Некоторые URL-адреса на серверах Windows также чувствительны к регистру.
Редактировать: Доменное имя не чувствительно к регистру (на самом деле, клиент конвертирует его в нижний регистр).
http://user:pass@domain.com/somedir/somefile.ext?someQueryString=someValue#fragment
=======----------==========--------------------------------------------------------
Legend:
- : Case sensitive
= : Case insensitive
Примечание: Предполагается, что фрагменты спецификации учитывают регистр, но это не реализовано таким образом на всех клиентах.
Это очень плохая идея делать то, что вы пытаетесь сделать. Лучшим способом было бы просто прописать имя домена в нижнем регистре.
Редактировать 2: Так как вы спросили, вот функция, которая будет правильно прописывать данный URL (только схема и домен):
function urltolower($url) {
$parts = @parse_url($url);
if($parts === FALSE) return FALSE;
$url = '';
if(!empty($parts['scheme'])) $url .= strtolower($parts['scheme']) . (($parts['scheme'] == 'file') ? ':///' : '://');
if(!empty($parts['user'])) $url .= $parts['user'] . ((!empty($parts['pass'])) ? ':' . $parts['pass'] : '') . '@';
if(!empty($parts['host'])) $url .= strtolower($parts['host']);
if(!empty($parts['port'])) $url .= ':' . $parts['port'];
if(!empty($parts['path'])) $url .= $parts['path'];
if(!empty($parts['query'])) $url .= '?' . $parts['query'];
if(!empty($parts['fragment'])) $url .= '#' . $parts['fragment'];
return $url;
}
[mixed] urltolower($url)
Нижний регистр URL. Возвращает FALSE
при ошибке. В случае успеха возвращает нижний регистр URL.
* 1 028 * Пример:
echo urltolower('HTTP://en.WikiPedia.org/wiki/PHP');
//echo's http://en.wikipedia.org/wiki/PHP