htaccess 傳遞多個參數

htaccess 傳遞多個參數

我有一個系統,每個用戶都有一個子網域和您自己的資料庫。前任:

usuarioa.system.com
usuariob.system.com

為了在瀏覽系統時將子目錄保留在導覽列上,我使用了以下規則:

RewriteEngine on
RewriteCond% {HTTP_HOST} ^ usera.system.com $ [OR]
RewriteCond% {HTTP_HOST} ^ www.usera.system.com $
RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]

它運作得很好,因為透過 PHP 使用 $_REQUEST,直接連接到正確的資料庫。問題是這一規則不接受多個參數,並且我所做的任何更改都會給出錯誤 403。

list ($queryString, $id) = explode ("user =", $ _SERVER [' REQUEST_URI ']);
list ($id, $idUsu) = explode (".", $id);

如何直接透過 htaccess 傳遞 02 參數並將子目錄保留在導覽列上?

抱歉我的英文不好,我正在使用 Bing 翻譯器。

答案1

RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]

如果您指的是將原始請求上的附加查詢字串參數傳遞給代換,那麼您需要QSA在指令上新增 (Query String Append) 標誌RewriteRule

QSA旗幟合併請求中的查詢字串以及您在上指定的查詢字串代換,否則,你所宣告的查詢字串將會覆蓋請求上的查詢字串,並且不會被傳遞。

例如:

RewriteRule (.*) http://www.system.com/access/$1?user=usera [QSA,P]

在旁邊:這...

RewriteCond% {HTTP_HOST} ^usera.system.com$ [OR]
RewriteCond% {HTTP_HOST} ^www.usera.system.com$

與以下內容相同,並且還允許 FQDN(以點結尾):

RewriteCond% {HTTP_HOST} ^(www\.)?usera\.system\.com [NC]

請記住轉義點以匹配文字點,否則,您將匹配任何特點。該NC標誌只是為了捕獲格式錯誤的請求。

相關內容