Home > Back-end >  Redirect to URL from URL
Redirect to URL from URL

Time:12-29

I am wondering how to deal with a simple redirect. I have a domain, for example: stackguy.com. And I want to redirect users to specific URLs from this url.

Let's say, stackguy.com/redirect=youtube.com/watch/xxx And this URL (youtube.com...) needs to be elastic. What the user enters, it should redirect to the website the user wants.

I have totally no idea, to be honest. I've tried to do it by using database and by separating all urls but it's a lot of work and can't be automated easily.

It can also be done like stackguy.com/red=<id of YT video> Doesn't matter to me.

CodePudding user response:

I think you should use query parameters for this and handle the redirect in your javascript. Instead of:

stackguy.com/redirect=youtube.com/watch/xxx

use

stackguy.com?redirect=https://www.youtube.com/watch/xxx

Then in your js you can check if the redirect paramter is set and redirect the user to the link in the query parameter.

Here is an example:

function redirectUrl() {
  // Get the value of the "redirect" query parameter
  const redirect = new URLSearchParams(window.location.search).get("redirect");
  // If the "redirect" parameter is not null, redirect the user to the specified URL
  if (redirect) {
    window.location = redirect;
  }
}

To use the function you will need to call it in your code for example:

window.addEventListener("load", redirectUrl);

CodePudding user response:

The other solution talks about using javascript which runs on the client side. And you probably want this on the server side.

You still need to use a parameter

stackguy.com?redirect=https://www.youtube.com/watch/xxx

But you can use php to do the redirect.

$par = filter_var ($_GET ['redirect'] ?? '', FILTER_SANITIZE_STRING); 
if ($par)
  {header('Location: ' . $par, true, 302); }
  • The first line gets the parameter after sanitizing it. It returns blank if its null (or missing)

  • The second line checks if there is a string

  • The third line does a redirect using a 302. This is a temporary redirect, I wouldn't advise using a 301 (permanent).

Note that this will only work if the PHP file has done NO HTML output.

  • Related