【发布时间】:2022-01-21 02:24:53
【问题描述】:
可以使用查询字符串通过一些推荐 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 标志应该可以解决问题,但它不适用于外部链接。
【问题讨论】:
-
您上面引用的这些 RewriteRule 根本不适用于任何类型的外部 url。因此,很高兴看到那些 RewriteRule,您在其中尝试使用外部 url。我们需要一些上下文来理解问题的根源。
-
@Eugeny 希望现在清楚了!
-
那么在每个外部链接上,您都想要您的推荐链接吗?
-
我编辑了您的帖子以便更好地理解,只是等待编辑完成。如果我理解正确,您根本不能将查询字符串附加到链接在您的代码中,但是每当用户单击链接时——无论是内部链接还是外部链接——都应该保留原始查询字符串/ 附加?
-
如果外部链接是用 php 构建的,你应该将查询字符串参数放在 php 中,这与 apache 无关。但要小心,
<?php echo $_GET['ref']是一个巨大的安全错误,如果这个参数包含 html 或 javascript 代码怎么办?
标签: php wordpress apache mod-rewrite