2012-05-06 33 views
0

我的項目有關於不同網站的數據,所以我使用.htaccess重寫了URL,這樣當有人將包含點(。)的名稱傳遞給我的網站時,它會顯示site.php頁面。這裏是我的代碼爲:將參數傳遞給rewrited urls

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?url=$1 
RewriteRule contact$ contact.php 

這將網站名稱作爲參數發送到site.php。現在我想要傳遞一個參數,就像它可能已經傳遞了一般,例如。我希望網站獲得實時更新的數據,我想通過?update=true,以便它從互聯網更新數據,而不是從數據庫中獲取數據。但傳遞這樣的參數

http://www.mysite.com/anysite.com?update=true 

不工作,我怎麼能傳遞額外的參數到我現有的重​​寫url?

回答

2

[QSA]標誌(「查詢字符串附加」)會將所有收到的查詢字符串附加到重寫的URL上。我還將[L]標誌添加爲最佳做法,以防止與您的第一條規則相匹配,並且還會在您的鏈條中稍後匹配附加規則,以便添加一條。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?url=$1 [QSA,L] 
RewriteRule contact$ contact.php [QSA,L] 

但是,如果我誤解了問題,你不需要爲瀏覽器要發送update=true而只是想迫使它在所有請求,簡單地把它添加到重寫規則:

RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?update=true&url=$1 [QSA,L] 
+1

提示:QSA代表「Query String Append」 – Pete