【问题标题】:Redirect rule 301 to remove query string重定向规则 301 以删除查询字符串
【发布时间】:2021-10-25 02:15:49
【问题描述】:

我不了解.htaccess 重定向规则。如果用户输入http://example.com?abc=123https://example.com?who=123https://example.com?xyz=123,那么它应该使用301 重定向重定向到https://example.com

如果用户输入任何查询字符串,那么它应该重定向到主页,但我只需要在主页而不是内部、plp 或 pdp 页面上实现这一点。

我的 plp URL 就像https://example.com/sale.html 一样,用户可以通过分层导航过滤器在此页面上添加查询字符串。我们对 plp 页面没问题。

请帮助我并提供.htaccess 规则或任何其他方式来完成此操作。我正在使用 Magento2 并使用 Fastly,如果通过 Fastly 在 Magento2 中有任何可能,那么它很容易实现。

【问题讨论】:

    标签: php .htaccess redirect mod-rewrite magento-2.3


    【解决方案1】:

    要删除对根 URL 的任何请求的查询字符串,然后在 .htaccess 文件的顶部添加以下内容:

    # Remove query string on homepage only
    RewriteCond %{QUERY_STRING} .
    RewriteRule ^$ / [QSD,R=301,L]
    

    如果文件后面已经出现了 RewriteEngine On 指令,则不需要重复(我希望它会这样做)。

    RewriteRule 模式 ^$ 仅匹配根(即https://example.com/)。前面的条件RewriteCond 指令)检查是否存在查询字符串(即,至少 1 个字符,由正则表达式 . 表示)。

    如果匹配,则将触发 302(临时)重定向回根 (/),但删除查询字符串。 QSD 标志(查询字符串丢弃)从重定向响应中丢弃原始查询字符串。

    注意:首先使用 302(临时)重定向进行测试(即将上述 RewriteRule 指令中的 R=301 更改为 R=302)以避免潜在的缓存问题。 (301 被浏览器永久缓存,因此可能会使测试出现问题。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 2012-05-29
      • 2012-08-16
      • 2012-05-30
      • 2014-11-11
      • 2011-04-18
      • 1970-01-01
      • 2013-06-21
      相关资源
      最近更新 更多