
我有一個系統,每個用戶都有一個子網域和您自己的資料庫。前任:
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
標誌只是為了捕獲格式錯誤的請求。