Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WordPress:将查询字符串附加到所有URL';s_Php_Wordpress_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php WordPress:将查询字符串附加到所有URL';s

Php WordPress:将查询字符串附加到所有URL';s,php,wordpress,mod-rewrite,url-rewriting,Php,Wordpress,Mod Rewrite,Url Rewriting,用户将被从网站定向到URL中包含查询字符串的登录页,即www.sitename.com?foo=bar&bar=foo。我想做的是,然后将该查询字符串附加到页面上的所有链接,最好是它们是否由WordPress生成(即硬编码与否),并在服务器端完成 这是因为他们的目标必须在URL中包含查询字符串。我可以使用cookies,但我不愿意,因为它有许多其他问题,这将为我的特定用例带来 我已经探索过将.htaccess与$\u服务器['QUERY\u STRING']结合使用的可能性,但没有任何效果。我对

用户将被从网站定向到URL中包含查询字符串的登录页,即
www.sitename.com?foo=bar&bar=foo
。我想做的是,然后将该查询字符串附加到页面上的所有链接,最好是它们是否由WordPress生成(即硬编码与否),并在服务器端完成

这是因为他们的目标必须在URL中包含查询字符串。我可以使用cookies,但我不愿意,因为它有许多其他问题,这将为我的特定用例带来

我已经探索过将
.htaccess
$\u服务器['QUERY\u STRING']
结合使用的可能性,但没有任何效果。我对
.htaccess
的理解不是很好,但我认为可以将当前URL重写为当前URL+存储
$\u服务器['QUERY\u STRING']
的变量

我也探索了
add\u rewrite\u 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();
});

JavaScript解决方案可能更具弹性,因为它不会在服务器上加载并让客户端完成工作。“我对.htaccess的理解不是很好,但在我看来,我认为可以将当前URL重写为当前URL+存储$\u server['QUERY\u STRING']的变量”-这是不可能的,因为您首先在这里没有可用的查询字符串值。您只能访问当前请求的URL的部分,但您感兴趣的查询字符串值来自“上一个”。(加上引号中的“previous”,因为在无状态的HTTP领域中没有这样的东西。)通过JS实现客户端可能是最有意义的;或者,您可以使用输出缓冲捕获整个输出,并在将整个内容发送到浏览器之前重写其中的链接。