2014-09-25 46 views
4

我有這個小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

+1對於編寫出色的問題來顯示所有代碼。 – anubhava 2014-09-25 07:46:07

+0

將查詢字符串的大寫重定向爲小寫之後,有關將查詢字符串參數重定向到具有額外參數的新查詢字符串的其他問題可能會引起您的興趣http://stackoverflow.com/questions/26034580/htaccess-rewrite-rule-to-add -another參數到URL查詢字符串或使用PHP到 – Mike 2014-09-25 09:09:03

回答

4

相反的:

$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} [A-Z] [OR] 
RewriteCond %{QUERY_STRING} [A-Z] 
RewriteRule (.*) rewrite-strtolower.php?rewrite-strtolower-url=$1 [QSA,L,NE] 

既然你應該打電話給你的PHP處理程序兩種情況。

+0

謝謝。我試過了,它仍然只在大寫字母在目錄中時才起作用。 – Mike 2014-09-25 07:23:09

+0

確定檢查更新的答案,因爲您還需要更改規則。 – anubhava 2014-09-25 07:25:57

+0

這個伎倆。你是一位優秀的程序員。如果你願意幫忙,我還有一件事可以在我的htaccess中提供幫助?讓我知道。我的查詢字符串現在有一個新的參數。我需要將所有舊的查詢字符串重定向到新的查詢字符串。例如:'?職位= Java + Developer'現在需要'?職業=開發人員&職位= Java +開發人員'你能幫忙嗎?我有11個職業。我如何將職業匹配到htaccess中的位置? – Mike 2014-09-25 07:31:56

相關問題