WordPress:将查询字符串附加到所有URL

时间:2019-01-08 12:39:53

标签: php wordpress mod-rewrite url-rewriting

用户将被从网站引导到登录页面,该登录页面的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();
});

0 个答案:

没有答案