用户将被从网站引导到登录页面,该登录页面的URL中将包含查询字符串,即www.sitename.com?foo=bar&bar=foo
。然后,我要执行的操作是将该查询字符串附加到页面上的所有链接,最好是 ,无论它们是否由WordPress生成(即是否由硬编码)并在服务器端完成。
之所以这样做,是因为其目标目的地必须在URL中具有查询字符串。我可以使用cookie,但是我不愿意这样做,因为它在我的特定用例中会带来很多其他问题。
我已经探索了将.htaccess
与$_SERVER['QUERY_STRING']
结合使用的可能性,但无济于事。我对.htaccess
的理解不是很好,但是我认为可以将当前URL重写为当前URL +存储$_SERVER['QUERY_STRING']
的变量。
我也探索了add_rewrite_rule
,但是找不到实现我想要的逻辑方法。
这是我拥有的Javascript解决方案,但是正如我所说,我想要一个服务器端解决方案:
const links = document.querySelectorAll('a');
links.forEach(link => {
if (!link.host.includes(location.host)) {
return;
}
const url = new URL(link.href);
const combined = Array.from(url.searchParams.entries()).reduce((agg, [key, val]) => {
agg.set(key, val);
return agg;
}, (new URL(location.href)).searchParams);
const nextUrl = [link.protocol, '//', link.host, link.pathname].join('');
link.href = (new URL(`${nextUrl}?${combined.toString()}`)).toString();
});