【问题标题】:How to redirect dynamic url如何重定向动态网址
【发布时间】:2022-06-29 22:49:38
【问题描述】:

所以这就是问题所在。我正在将 Elementor Pro 用于 woocomerce,并且该插件将订单完成重定向到错误的 url。目前没有办法解决这个问题。

现在修复它的唯一方法是从下面的链接将?elementor_library=single-product 更改为checkout

我想重定向

https://domain.co.uk/?elementor_library=single-product/order-received/2786/&key=wc_order_i6GIKeD0SaNM9

https://domain.co.uk/checkout/order-received/2786/?key=wc_order_i6GIKeD0SaNM9

这是我的 htaccess 代码

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /

    # Checkout Page
    RewriteRule ^?elementor_library=single-product/order-received/?$    /checkout/order-received/$1 [R=301,L]

</IfModule>

【问题讨论】:

  • 到底是什么问题?您没有包含任何明确的问题陈述。见How to Ask
  • 更新了我的问题。
  • 仍然没有明确的问题说明。反而发生了什么?你为什么特别期待这一点,否则会发生什么? (仅说明您想要什么,然后删除一些可以轻松复制和粘贴的代码并不能使您的编程/配置意图清晰 - 它可以提供帮助,但也会引起猜测)。

标签: wordpress .htaccess


【解决方案1】:
RewriteRule ^?elementor_library=single-product/order-received/?$    /checkout/order-received/$1 [R=301,L]

RewriteRule 模式(第一个参数)只匹配 URL 路径,而不是查询字符串,所以这永远不会匹配指定的 URL(它由一个大的查询字符串和“ empty" URL-path) - 所以什么也不做。

您也只匹配查询字符串的一部分,并且由于您使用的是字符串结尾锚点,因此它永远不会匹配指定的查询字符串。

您还使用了$1 反向引用,但在RewriteRule 模式 中没有捕获子组。所以,$1 总是空的。

要匹配查询字符串,您需要使用RewriteCond 指令并匹配QUERY_STRING 服务器变量。

所以?elementor_library=single-product应该改为checkout

这不是您在示例中所做的唯一事情。您正在将查询字符串的一部分转换为 URL 路径,但在查询字符串中保留 key URL 参数。

请尝试以下方法:

RewriteCond %{QUERY_STRING} ^elementor_library=single-product/order-received/(\d+)/&key=(\w+)$
RewriteRule ^$ /checkout/order-received/%1/?key=%2 [NE,R=301,L]

这会将/?elementor_library=single-product/order-received/&lt;number&gt;/&amp;key=&lt;code&gt; 形式的URL 重定向到/checkout/order-received/&lt;number&gt;/?key=&lt;code&gt;

\w 是与字符 a-zA-Z0-9_(下划线)匹配的速记字符类,它似乎涵盖了示例中 key URL 参数的值.

其中%1%2 是对前面CondPatternRewriteCond 指令)中捕获子组的反向引用。

NE 标志只是为了确保从 URL 字符串复制的值不会被双重 URL 编码(尽管在发布的示例中不应该发生这种情况)。

您应该首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。并在测试前清除浏览器缓存。

另外,这里没有使用RewriteBase 指令,&lt;IfModule&gt; 包装很可能是多余的。

还要注意,指令的顺序很重要。此规则可能需要靠近根 .htaccess 文件的顶部。

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 2011-04-17
    • 2012-05-21
    • 2014-11-17
    • 2010-12-03
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    相关资源
    最近更新 更多