PHP htaccess Перенаправить URL-адрес с строкой запроса от верхнего регистра к нижнему регистру

У меня есть этот небольшой php-скрипт и пара строк в htaccess для перенаправления URL-адресов с строками запросов от верхнего регистра к нижнему регистру.

Тем не менее, он перенаправляет символы верхнего регистра в строке запроса на нижние регистры только в том случае, если в файле url или в каталожной части URL-адреса имеется символ верхнего регистра.

Пример с файлом верхнего регистра:

domain.com/JOBS/?position=Java+Developer 

будет перенаправлен на

 domain.com/jobs/?position=java+developer 

Пример без прописных букв в каталоге или имени файла, но только в строке запроса:

 domain.com/jobs/?position=Java+Developer 

будет перенаправлен на

 domain.com/jobs/?position=Java+Developer 

Первый пример успешно перенаправляет каталог и строку запроса на все строчные буквы.

Второй пример не перенаправляет строку запроса на нижний регистр, он остается тем же.

Я не могу понять, что нужно изменить в коде, чтобы строка запроса перенаправлялась на нижний регистр независимо от того, является ли каталог или имя файла заглавными или нет.

Вот код:

Htaccess

 RewriteEngine On RewriteBase / # force url to lowercase if upper case is found RewriteCond %{REQUEST_URI} [AZ] RewriteRule (.*) rewrite-strtolower.php?rewrite-strtolower-url=$1 [QSA,L] 

PHP-скрипт

 <?php if(isset($_GET['rewrite-strtolower-url'])) { $url = $_GET['rewrite-strtolower-url']; unset($_GET['rewrite-strtolower-url']); $params = http_build_query($_GET); if(strlen($params)) { $params = '?' . strtolower($params); } header('Location: http://' . $_SERVER['HTTP_HOST'] . '/' . strtolower($url) . $params, true, 301); exit; } header("HTTP/1.0 404 Not Found"); die('Unable to convert the URL to lowercase. You must supply a URL to work upon.'); ?> с <?php if(isset($_GET['rewrite-strtolower-url'])) { $url = $_GET['rewrite-strtolower-url']; unset($_GET['rewrite-strtolower-url']); $params = http_build_query($_GET); if(strlen($params)) { $params = '?' . strtolower($params); } header('Location: http://' . $_SERVER['HTTP_HOST'] . '/' . strtolower($url) . $params, true, 301); exit; } header("HTTP/1.0 404 Not Found"); die('Unable to convert the URL to lowercase. You must supply a URL to work upon.'); ?> 

Вместо:

 $params = http_build_query($_GET); 

используйте его вот так:

 $params = strtolower ( http_build_query($_GET) ); 

И ваш .htaccess должен быть:

 RewriteEngine On RewriteBase / # force url to lowercase if upper case is found RewriteCond %{REQUEST_URI} [AZ] [OR] RewriteCond %{QUERY_STRING} [AZ] RewriteRule (.*) rewrite-strtolower.php?rewrite-strtolower-url=$1 [QSA,L,NE] 

Поскольку вы должны называть ваш обработчик PHP для обоих случаев.