RewriteCond和Rewrite规则以查找查询字符串并重定向到固定网页

时间:2018-10-25 16:21:29

标签: wordpress .htaccess

我正在尝试找到正确的代码,以将具有查询参数的URL重定向到没有参数的特定URL。例如,我有以下URL:

https://www.sample.org/book-order-success?reading-choice=Read%20on%20Website&reading-choice-second=

我想重定向此页面:

https://www.sample.org/no-more-delay-on-website

这是我编写的代码,但是当我尝试实现它时出现500个内部服务器错误:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^(.*)reading-choice=Read(.*)$
RewriteRule ^(.*) https://www.sample.org/no-more-delay-on-website [QSD,R=301,L]
</IfModule>

我正在尝试使用WordPress网站上的联系表7来生成带有条件结果的响应表。与第一个示例类似,大约有五个条件会产生链接。我想根据用户在表单中选择的条件为他们提供具体的答复。

有什么想法吗?

谢谢, MPurvis

2 个答案:

答案 0 :(得分:0)

您实际上是在WordPress中为重定向创建页面吗?

您可以使用它们的URL打开它们而没有任何错误吗?

我的意思是类似“预订成功” “网站上没有更多延迟” 的页面。必须创建它们,或者您只想重定向到外部URL。

为什么不使用某些PHP代码而不是htaccess来做到这一点? 在WordPress和PHP中,您可以从URL中检查查询参数,这些参数实际上是GET请求。更简单。

function check_query_parameters() {
// is_page() - which page has query parameters you can type page id, slug etc.
  if(is_page('book-order-success')){
    $query_paremeter = $_GET['reading-choice'];
    if (isset($query_paremeter) && $query_paremeter == 'Read On Website') {

     // redirect to a specific URL
     header("Location: https://www.sample.org/no-more-delay-on-website");
     die();

    }
}

add_action( 'wp', 'check_query_parameters' );

您可以通过将其处理到当前WordPress主题中的 functions.php 中来进行尝试。

functions.php 的描述:”“功能文件的行为类似于WordPress插件,通过PHP代码向WordPress网站添加了功能。您可以使用它来调用本地PHP函数,WordPress函数或定义自己的函数。”

文档:

GET请求($ _GET)http://php.net/manual/en/reserved.variables.get.php

is_page(): https://developer.wordpress.org/reference/functions/is_page/

functions.php: https://codex.wordpress.org/Functions_File_Explained

答案 1 :(得分:0)

尝试php编码以及其他选项失败后,我发现了一个与Contact Form 7兼容的付费插件。最适合我的是https://codecanyon.net/item/contact-form-7-redirects-thank-you-and-failed-page/20211250