Я пытаюсь сделать страницу, перенаправляющую клиента к URL после ?q=
. Например, http://example.com/?q=http://www.google.com
перенаправит пользователя на http://www.google.com
. Что мне нужно сделать, чтобы перенаправить страницу в зависимости от URL-адреса после ?q=
?
JS
var lnk = location.href.split( '?q=' );
location.href = lnk[1];
PHP
header( 'Location: ' . $_GET['q'] );
q
является единственным параметром в URL
Делает массив из всех переменных в адресной строке:
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'];
Вы не указываете, какой язык программирования вы используете, если вы используете PHP, вы можете это сделать:
<?php
if (isset($_GET['q']) && !empty($_GET['q'])) {
header('Location: '.$_GET['q']);
}
?>
Вы можете опционально проверить URL-адрес, чтобы предотвратить ошибки. Убедитесь, что вы используете PHP-версию (PHP> 5.2.13). Проверьте этот вопрос: Почему FILTER_VALIDATE_URL возвращает FALSE только для этого 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";
}
}
?>