【问题标题】:Combining HTAccess rules into one将 HTAccess 规则合二为一
【发布时间】:2020-01-08 11:29:03
【问题描述】:

大家好,我正在尝试使用 Htaccess 将所有页面重定向到 https://,同时保留不带 fbclid 的查询字符串(如果存在)。

IE。

他们应该返回https://example.com/?sdfuh

好的,经过一些帮助,我已经解决了这个问题

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [AND]
RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)fbclid=(?:[^&]*)((?:&|$).*)$ [NC] 
RewriteRule ^(.*)/?(.*)$ https://example.com/?%1 [R=301,L] 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [AND]
RewriteCond %{QUERY_STRING} ^(.*)
RewriteRule ^(.*)/?(.*)$ https://example.com/ [R=301,L] 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(.*)/?(.*)$ https://example.com/ [R=301,L] 
RewriteCond ^(www.)?example.com$
RewriteRule ^(.*)/?(.*)$ https://example.com/ [R=301,L] 

这适用于:

没有

  • www.example.com/?sdfuh&fbclid=azduh
  • example.com/?sdfuh&fbclid=azduh

我需要弄清楚如何让它更短并利用所有可能性

【问题讨论】:

  • 不,我总是想获得 https://,但该网站的某些链接具有用于推荐的查询字符串,例如 example.com/?abc,但因为 facebook 也喜欢查询字符串,如果它们来自 facebook 那篇文章删除那里的标签并将其放回 example.com/?abc 我试图将它结合起来,所以我总是得到 https 和查询字符串 ?abc 但如果 fbclid= 在那里删除它。

标签: html .htaccess redirect mod-rewrite url-rewriting


【解决方案1】:

经过大量帮助,这解决了我剥离 facebooks 跟踪器、保留我自己的查询字符串并确认使用了 https:// 的问题。

RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)fbclid=(?:[^&]*)((?:&|$).*)$ [NC]
RewriteRule ^(.*)/?(.*)$ https://example.com/?%1%2 [R,N]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www.example.com$ 
RewriteRule ^(.*)/?(.*)$ https://example.com/$2 [R,L]

【讨论】:

    【解决方案2】:

    我相信您遗漏的主要知识是使用 [OR],而不是字面上的组合规则 - 这意味着如果只有一个 RewriteCond 导致 RewriteRule 不会失败true.

    RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [OR]
    RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)fbclid=(?:[^&]*)((?:&|$).*)$ [NC]
    RewriteRule ^(.*)/?(.*)$ https://example.com/?%1%2 [R=301,L]
    

    您可以在这里进行测试:https://htaccess.madewithlove.be?share=f4381086-80b4-52b6-883e-8921f5de2316

    【讨论】:

    • 这非常有用,谢谢。我现在唯一的问题是我从 Rewriterule 中删除了 %2,因为我只想要第一个而不是 fbclid 之后。但是当我这样做时,它现在抓住了 www。如果 fbclid 不存在并且它不会一直存在
    • 我用新设置更新了问题,它几乎完美,谢谢我只能找到两个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    相关资源
    最近更新 更多