【问题标题】:htaccess redirect with query string preservedhtaccess 重定向并保留查询字符串
【发布时间】:2016-08-19 16:57:43
【问题描述】:

我希望通过 .htaccess 重定向实现的是:

一个url请求:“http://subdomain1.mysite.com/addToBasket.php?query_string

被重定向到

http://subdomainA.subdomain1.mysite.com/addToBasket.php?query_string

子域 'subdomain1' 和 'subdomainA.subdomain1' 在 DNS 中正确设置为完全限定域名

但是,subdomain1.mysite.com 存在于 与 subdomainA.subdomain1.mysite.com 不同的服务器上 - 因此始终需要绝对 url 格式。

在请求站点子域目录中,'addToBasket.php'脚本文件将不存在,但将存在于重定向到子域目录中

请求的查询字符串是通配符,但在重定向期间不得更改。

我已经搜索并尝试了许多示例解决方案 - 但重定向中始终省略“?查询字符串”部分。

subdomain1 => subdomainA.subdomain1 疯狂和不同服务器的原因是,一个新站点正在新服务器上启动一个新的启动数据库,但旧站点向客户生成了与购物篮相关的电子邮件,其中包含他们点击完成的链接订购流程 - 因此旧网站仍将在旧服务器上托管一段时间,但在子域下只是为了让这些电子邮件链接仍有时间与它们设计的系统一起工作。

不幸的是,新开发人员创建了一个与旧站点中使用的名称相似的子域系统 - 因此旧站点现在将具有 'subdomain.subdomain' url 格式,以允许它具有不同的 IP 和功能。

非常感谢任何帮助!

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite


    【解决方案1】:

    除非您明确覆盖查询字符串,否则它将自动保留,请参阅RewriteRule

    修改查询字符串

    默认情况下,查询字符串原封不动地传递。但是,您可以在包含查询字符串部分的替换字符串中创建 URL。只需在替换字符串中使用问号来指示应将以下文本重新注入到查询字符串中。当您想删除现有的查询字符串时,只用问号结束替换字符串。要组合新旧查询字符串,请使用 [QSA] 标志。

    这意味着,如果您只是重定向而不自己添加查询字符串,它将被传递,例如

    RewriteRule ^addToBasket.php$ http://subdomainA.subdomain1.mysite.com/addToBasket.php [L]
    

    或者如果你想重定向的不仅仅是这个,而是每一个可能的请求

    RewriteRule ^ http://subdomainA.subdomain1.mysite.com%{REQUEST_URI} [L]
    

    【讨论】:

      猜你喜欢
      • 2015-10-16
      • 2012-06-08
      • 2015-03-30
      • 1970-01-01
      • 2012-05-21
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多