我有這個小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} [A-Z]
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.');
?>
+1對於編寫出色的問題來顯示所有代碼。 – anubhava 2014-09-25 07:46:07
將查詢字符串的大寫重定向爲小寫之後,有關將查詢字符串參數重定向到具有額外參數的新查詢字符串的其他問題可能會引起您的興趣http://stackoverflow.com/questions/26034580/htaccess-rewrite-rule-to-add -another參數到URL查詢字符串或使用PHP到 – Mike 2014-09-25 09:09:03