【问题标题】:htaccess redirect whilst parsing query string and variablehtaccess 重定向同时解析查询字符串和变量
【发布时间】:2016-09-05 16:49:19
【问题描述】:

如何在捕获“?”之后的任何内容的同时重定向子域并使用 htaccess 附加到重定向,同时维护特定变量?

从...重定向

http://subdomain1.example.com/?retailcentre=subdomain1&utm_source=twitter&utm_medium=twitter&utm_campaign=022641example

到...

http://www.example.com/?retailcentre=subdomain1&utm_source=twitter&utm_medium=twitter&utm_campaign=022641example

'?' 后面的查询字符串可以是任何东西,因为它可以来自 twitter、facebook 等。

必须解析的一个变量是重定向来自哪个子域,在本例中为“retailcentre”。

【问题讨论】:

    标签: .htaccess query-string url-redirection


    【解决方案1】:

    尝试:

    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^subdomain1\.example\.com$ [NC]
    RewriteRule ^ http://www.example.com%{REQUEST_URI}?retailcentre=subdomain1 [QSA,NE,R=301,L]
    

    [QSA]标志:当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并用新生成的查询字符串替换它。使用 [QSA] 标志会合并查询字符串。

    【讨论】:

    • 谢谢,这很接近,但缺少“retailcentre”变量。此变量的值取自 URL 的子域部分,因此 '?retailcentre=subdomain1' 部分后跟原始 URL 中的查询字符串。这可能吗?
    • 我几乎可以使用它,我使用了以下...RewriteRule ^ http://www.example.com/?retailcentre=subdomain1$1%{REQUEST_URI} [QSA,NE,R=301,L] ...但它在'retailcentre'的值之后添加了%2F
    • 所以我重新编辑的 URL 看起来像这样http://www.example.com/?retailcentre=subdomain1%2F&utm_source=email&utm_medium=email&utm_campaign=022641ReservedEventCustomerEmail。我想删除%2F
    • Retailcentre 在您的“重定向自”示例中...我用它来编辑我的代码。
    【解决方案2】:

    您可以使用以下规则:

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} !^www\.example\.com$
    RewriteCond %{THE_REQUEST} /\?retailcentre=.+&utm_source=.+&utm_medium=.+&utm_campaign=.+\sHTTP [NC]
    RewriteRule ^ http://example.com/ [L,R,NE]
    

    【讨论】:

    • 这在这种情况下不起作用,因为我必须捕获“?”之后的任何内容而不是你所拥有的特定变量。
    猜你喜欢
    • 2013-10-22
    • 2015-03-31
    • 1970-01-01
    • 2012-10-15
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多