【问题标题】:How To Use ?q= To Redirect Url如何使用 ?q= 重定向 URL
【发布时间】:2014-04-14 01:09:02
【问题描述】:

我正在尝试创建一个页面,将客户端重定向到?q= 之后的 URL。例如http://example.com/?q=http://www.google.com 会将用户重定向到http://www.google.com。我需要做什么才能根据?q= 之后的 URL 重定向页面?

【问题讨论】:

  • 服务器端?客户端?任何语言偏好?您不能仅在纯 HTML 中执行此操作。
  • 您使用哪种服务器端编程语言?
  • 我正在使用 PHP5 和 JavaScript 来执行此操作。

标签: html redirect


【解决方案1】:

将地址栏中的所有变量组成一个数组:

var query = {};
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
    function(m,key,value) { query[key] = value; });

在随机的 Google 搜索中测试,该对象看起来像:

aqs:      "chrome.0.69i59j69i65l3j69i61j0.1762j0j4"
es_sm:    "0"
ie:       "UTF-8"
oq:       "random"
q:        "random"
sourceid: "chrome"

所以,找到你的 q 变量并重定向到它:

var query = {};

window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
    function(m,key,value) { query[key] = value; });

location.href = query['q'];

【讨论】:

    【解决方案2】:

    您无需指定您使用的编程语言,如果您使用的是 PHP,您可以这样做:

    <?php
    
      if (isset($_GET['q']) && !empty($_GET['q'])) {
          header('Location: '.$_GET['q']);       
    
      }                 
    
    ?>
    

    您可以选择验证 URL 以防止错误。确保您使用的是 PHP 版本(PHP > 5.2.13)。检查这个问题:Why FILTER_VALIDATE_URL return FALSE for only this url?

    <?php
    
      if (isset($_GET['q']) && !empty($_GET['q'])) {
         if(filter_var($_GET['q'], FILTER_VALIDATE_URL)){
            header('Location: '.$_GET['q']); 
         }else{
            echo "Invalid URL";
         }
    
      }
    

    ?>

    【讨论】:

      【解决方案3】:

      JS

      var lnk = location.href.split( '?q=' );
      location.href = lnk[1];
      

      PHP

      header( 'Location: ' . $_GET['q'] );
      

      【讨论】:

      • 除非 q 是 url 中的唯一参数,否则 JavaScript 将无法工作
      猜你喜欢
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2014-09-25
      • 2015-04-16
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多