2017-10-28 140 views
1

我無法使用.htaccess進行內部重寫(即,使用請求的URL形成內部請求,然後將其提供給客戶端,他們仍然只能看到原始請求的URL)只有一個URL,其中只有一個參數已經過優化,其餘請求參數仍被附加。堆棧上的其他帖子只涉及一個相關參數,或者希望每參數重定向.htaccess - 僅針對一個參數的內部友好URL重寫

即,

我可以用於第一子彈,一個單一的參數重寫這樣做;

RewriteEngine on 
RewriteBase/

#Prettify test 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?overhoringen/open/([^/]+)/?$ /overhoringen/open.php?testId=$1 [L] 

然而,我不能確定如何捕獲請求查詢在端部,然後將其附加到內部重定向(如果存在的話),而不?仍然在前面(以避免open?testId=9?other=param&more=param)等。
幫助,這將是非常酷。 :]

+1

你需要[QSA參數](https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa) – akond

+0

@akond雖然這看起來很完美,但php $ _GET讀取仍只記錄testId參數..:/ – Isaiah

+0

@akond我將QSA參數附加爲[L] [QSA],而不是[L,QSA],這是問題所在 – Isaiah

回答

2

改變這一行:

RewriteRule ^/?overhoringen/open/([^/]+)/?$ /overhoringen/open.php?testId=$1 [L] 

到:

RewriteRule ^/?overhoringen/open/([^/]+)/?$ /overhoringen/open.php?testId=$1 [L,QSA] 

添加QSA應追加額外的查詢字符串到新的URL。