[英]Keep query string for external urls
可以使用查詢字符串通過一些推薦 id 將用戶發送到主網站:
www.site.com/?ref=XXX
當他們單擊登錄區域的鏈接時,此查詢字符串必須與該外部鏈接一起使用:
https://internal.site.com?ref=XXX
我正在使用 wordpress,所以我不能將?ref=<?php echo $_GET['ref']?>
附加到該鏈接。
我已經將.htaccess
更改為:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php - [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]
</IfModule>
返回主網站的每個鏈接都會保留查詢字符串,但外部 URL 不會。
www.site.com?ref=XXX [original]
www.site.com/go/reds?ref=XXX [query strings are kept]
https://internal.site.com [query strings are removed]
htaccess
中的QSA
標志應該可以解決問題,但它不適用於外部鏈接。
您可以通過在頁面末尾添加此腳本來完成此操作。 此代碼將變量傳遞給客戶端的每個鏈接。
<p><a href="/about/">Internal</a></p>
<p><a href="https://google.com">External</a></p>
<p><a href="/post/?id=1">Link with query string</a></p>
<script>
var index = window.location.href.indexOf('?')
if(index != -1){
var querystring = window.location.href.slice(index + 1)
var tagA = document.getElementsByTagName('a');
for(var i = 0; i < tagA.length; i++){
var href = tagA[i].getAttribute('href');
href += (href.indexOf('?') != -1)? '&' : '?';
href += querystring;
tagA[i].setAttribute('href', href);
}
}
</script>
要在每次調用 the_permalink() 函數時應用自定義查詢,您可以使用此過濾器
function append_query_string($url) {
if (isset($_GET['ref'])) {
$url = add_query_arg('ref', $_GET['ref']);
}
return $url;
}
add_filter('the_permalink', 'append_query_string');
但它可能是不方便的選項,因為它僅適用於使用 the_permalink 函數生成的鏈接,因此您還必須將此函數應用於菜單、帖子類型存檔鏈接,以及通常在沒有 wp 永久鏈接的情況下生成鏈接的地方功能。
另一種解決方案是將引用存儲在會話 cookie 或 $_SESSION 全局中:在這種情況下,每次用戶瀏覽器關閉時引用都會丟失,因此如果用戶在被引用后手動返回您的站點,您也可以跟蹤引用.
希望能幫助到你 :)
$queryString = "";
$x = 0;
foreach($_GET as $key=>$value){
$queryString[$x]= "&$key=$value;
$x++;
}
$url = $url."?".implode("&",$queryString);
這是一個簡單可行的js函數來完成這個:
function addQueryParamsToLinks() {
const links = document.getElementsByTagName("a");
const queryParams = window.location.search;
for (const link of links) {
link.setAttribute("href", `${link.getAttribute("href")}${queryParams}`);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.