【问题标题】:Passing variable through subdomain wildcard redirect?通过子域通配符重定向传递变量?
【发布时间】:2012-03-12 05:38:02
【问题描述】:

我正在编写一个新脚本,基本上当有人在我的网站上搜索某些内容时,它通常会转到这里:

http://domain.com/index.php?q=apples

http://apples.domain.com

我已经在 PHP 和 htaccess 中完美地完成了这项工作,但我遇到的问题是之后在新的子域页面上使用 original 关键字。

现在我可以使用 parse_url 从 url 中获取关键字,但我的脚本也会过滤掉潜在的问题,例如:

public function sanitise($v, $separator = '-')
    {
        return trim(
            preg_replace('#[^\w\-]+#', $separator, $v),
            $separator
        );
    }

所以如果有人搜索 netbook v1.2

新的子域将是:

http://netbook-v1-2.domain.com

现在我可以取出关键字,但它带有破折号而不是原始关键字。我也在寻找一种通过 301 重定向发送原始关键字的方法。

谢谢!

【问题讨论】:

  • 您尝试过使用会话吗?

标签: php regex .htaccess redirect wildcard-subdomain


【解决方案1】:

您可以在他们访问新子域时将连字符替换为空格,或者由于您在同一个顶级域中,因此您可以在重定向它们时仅对关键字进行 cookie:

setcookie('clientkeyword', 'netbook-v1-2.domain.com:netbook v1.2', 0, '/', '.domain.com');

【讨论】:

  • 当人们自己搜索项目时效果很好,但如果用户从谷歌或其他地方点击 apples.domain.com,什么都不会显示。 :(
  • 这就是为什么我也从$_SERVER['HTTP_HOST'] 中声明了just replace the hyphen with spaces。在这种情况下,您无能为力。
  • 想了想,你是绝对正确的。我对此无能为力,所以这应该足够好了。谢谢!
【解决方案2】:

看看这个答案:https://stackoverflow.com/a/358334/992437

看看你是否可以使用已经存在的 POST 或 GET 数据。如果是这样,那可能是您最好的选择。

【讨论】:

  • .htaccess 中的特定标志告诉 POST 数据和 GET 数据也被重定向。我错过了什么吗?
  • 您将重写与重定向混淆了。客户端不会重新发布其数据。
  • 我一定完全糊涂了。但根据我的经验,RewriteRule 也可以重定向([L,R=301])。这是他们所做的一部分。不过,我会对此进行更多研究,因为我可能遗漏了一些东西。
猜你喜欢
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 2018-08-14
  • 2012-09-08
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2014-08-30
相关资源
最近更新 更多