Создать более короткую версию URL в Stack Overflow

У меня есть такой URL:

http://domain.com/key1=00998833&ключ2 = 8666886&Par3 = тестирование&страница = 2

В URL есть много параметров, но мне нужно показать более короткую версию URL, когда страница отображается в браузере. Чтобы быть более понятным, мне нужно, чтобы URL был что-то вроде:
http://domain.com/link123456
или немного по-другому.

Есть ли способ сделать это?

Я много искал, но пока не нашел решения.

Спасибо

1

Решение

Поместите в свой файл htaccess:

RewriteRule   ^link123456/?$   index.php?key1=00998833&key2=8666886&par3=testing&page=2 [L,QSA]
0

Другие решения

Если вам нужны все переменные, вы не можете их сократить. Что вы можете сделать, это сохранить ключи локально в БД и поместить идентификатор строки из БД в URL.

Затем, когда URL-адрес загружен, вы просто проверяете БД на наличие строки с переменными.

0

На самом деле URL будут генерироваться из шорткода. Настройки параметров будут отличаться для каждого URL — Источник комментариев

Это заставляет меня поверить, что вам нужна база данных для хранения коротких URL-адресов против длинных URL-адресов.

Ты можешь использовать index.php в качестве маршрутизатора, и сохраните короткие URL-адреса в базе данных против длинных URL-адресов.

Создать .htaccess переписать правило

RewriteEngine On
RewriteRule ^(.*)$ index.php?q=$1 [NC,QSA]

Это сделает http://example.com/short123456 «перенаправить» на http://example.com/index.php?q=short123456,

Создайте свою базу данных (при условии MySQL)

CREATE TABLE `urls` (
`short_url` varchar(50) NOT NULL,
`long_url` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Мы будем хранить наши короткие и длинные URL-адреса здесь.

Создайте свой роутер

в .htaccess переписать правило, мы собираемся index.php, Итак, внутри вашего index.phpмы можем сделать следующее;

<?php
if( isset($_GET['q']) ) { //See if there is any query string
$short_code = ctype_alnum( (string) $_GET['q']) ? (string) $_GET['q'] : ''; //Filter out any potential nasty characters.
/**
* Query database
* SELECT `long_url` FROM `urls` WHERE `short_url` = $short_code
* Best to use PDO or MySQLi to do this (and I'm assuming you're using a MySQL database to store these)
*/
if($query->num_rows) { //There is a result
$result = $query->fetch(PDO::FETCH_ASSOC); //Assuming you've used PDO
header('Location: '. $result['long_url']); //Redirect to the long url
die;
} else {
//Short code doesn't exist
http_response_code(404); //No result, return with 404 Not Found
die;
}
} else {
//Do other logic...
}
0
По вопросам рекламы [email protected]