2017-10-28 163 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。