.htaccess - 仅针对一个参数的内部友好URL重写
问题描述:
我无法使用.htaccess进行内部重写(即,使用请求的URL形成内部请求,然后将其提供给客户端,他们仍然只能看到原始请求的URL)只有一个URL,其中只有一个参数已经过优化,其余请求参数仍被附加。堆栈上的其他帖子只涉及一个相关参数,或者希望每参数重定向。.htaccess - 仅针对一个参数的内部友好URL重写
即,
- https://new.mysite.com/overhoringen/open/7应内部请求https://new.mysite.com/overhoringen/open?testId=7
- https://new.mysite.com/overhoringen/open/9?other=param&more=param应内部请求 https://new.mysite.com/overhoringen/open?testId=9&other=param&more=param
我可以用于第一子弹,一个单一的参数重写这样做;
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
)等。
帮助,这将是非常酷。 :]
答
改变这一行:
RewriteRule ^/?overhoringen/open/([^/]+)/?$ /overhoringen/open.php?testId=$1 [L]
到:
RewriteRule ^/?overhoringen/open/([^/]+)/?$ /overhoringen/open.php?testId=$1 [L,QSA]
添加QSA应追加额外的查询字符串到新的URL。
你需要[QSA参数](https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa) – akond
@akond虽然这看起来很完美,但php $ _GET读取仍只记录testId参数..:/ – Isaiah
@akond我将QSA参数附加为[L] [QSA],而不是[L,QSA],这是问题所在 – Isaiah