所以这里的问题。我正在使用Elementor Pro为woocomerce和插件重定向订单完成到一个错误的网址。目前没有办法解决这个问题。
现在唯一的解决方法是从下面的链接将?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>
1条答案
按热度按时间cbjzeqam1#
RewriteRule
pattern(第一个参数)只匹配URL路径,而不匹配查询字符串,因此它永远不会匹配指定的URL(由一个大的查询字符串和“空”URL路径组成)-因此什么也不做。您也只匹配查询字符串的一部分,并且由于您使用的是字符串结尾锚,因此它永远不会匹配指定的查询字符串。
您还使用了
$1
反向引用,但在RewriteRule
* 模式 * 中没有捕获子组。因此,$1
始终为空。若要比对查询字串,您需要使用
RewriteCond
指示词,并比对QUERY_STRING
服务器变数。因此,应将
?elementor_library=single-product
更改为checkout
这并不是示例中要做的唯一一件事,您将查询字符串的一部分转换为URL路径,但保留了查询字符串中的
key
URL参数。请尝试以下方法:
这会将
/?elementor_library=single-product/order-received/<number>/&key=<code>
的URL重定向到/checkout/order-received/<number>/?key=<code>
\w
是一个速记字符类,它与字符a-z
、A-Z
、0-9
和_
(下划线)匹配,这似乎涵盖了示例中key
URL参数的值。其中
%1
和%2
是对前面的 CondPattern(RewriteCond
指令)中的捕获子组的反向引用。NE
标志只是为了确保从URL字符串复制的值不是双重URL编码的(尽管在所发布的示例中不应该发生这种情况)。你应该先用一个302(临时)重定向来测试,以避免潜在的缓存问题。并且在测试之前清除你的浏览器缓存。
此外,这里没有使用
RewriteBase
指令,<IfModule>
Package 器很可能是多余的。还要注意,指令的顺序很重要。这条规则可能需要放在
.htaccess
根文件的顶部附近,当然是在WordPress代码块之前。