2013-05-31 109 views
0

我有以下線在.htaccess:的.htaccess需要重寫規則和額外的查詢字符串

RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1 

getnewpdf.php是從會話中添加用戶的名稱,所下載的文件名的腳本。但是,會話尚未創建且用戶名需要來自數據庫的情況。所以我需要傳遞一個ID(需要時)。我有這個:

RewriteRule ^newpdfs/(.*)\.pdf?id=(.*) /getnewpdf.php?pdf=$1&id=$2 

但是我的ID查詢被忽略。我將如何去傳遞查詢字符串呢?

回答

1

添加[QSA]將統治的結束就意味着要追加查詢字符串

2

你錯過L(尾)標誌,您將需要QSA(查詢字符串附加)追加任何現有的查詢字符串。在你的代碼應該是這樣的:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^newpdfs/([^.]+)\.pdf$ /getnewpdf.php?pdf=$1 [L,NC,QSA] 
2

就在QSA標誌添加到您的現有規則:

RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1 [QSA] 

當更換URI包含查詢字符串,重寫規則的默認行爲是丟棄現有的查詢字符串,並將其替換爲新生成的字符串。使用[QSA]標誌會導致查詢字符串被合併。

此處進一步參考:http://httpd.apache.org/docs/2.4/rewrite/flags.html

相關問題