How to get the URL without any parameters in JavaScript?

Javascript

Javascript Problem Overview


If I use:

alert(window.location.href);

I get everything including query strings. Is there a way to just get the main url part, for example:

http://mysite.com/somedir/somefile/

instead of

http://mysite.com/somedir/somefile/?foo=bar&loo=goo

Javascript Solutions


Solution 1 - Javascript

This is possible, but you'll have to build it manually from the location object:

location.protocol + '//' + location.host + location.pathname

Solution 2 - Javascript

Every answer is rather convoluted. Here:

var url = window.location.href.split('?')[0];

Even if a ? isn't present, it'll still return the first argument, which will be your full URL, minus query string.

It's also protocol-agnostic, meaning you could even use it for things like ftp, itunes.etc.

Solution 3 - Javascript

I'm LATE to the party, but I had to solve this recently, figured I'd share the wealth.

const url = window.location.origin + window.location.pathname
//http://example.com/somedir/somefile/

window.location.origin will give you the base url, in our test case: http://example.com

window.location.pathname will give you the route path (after the base url), in our test case /somedir/somefile

SOLUTION 2

You can simply do the following to get rid of the query parameters.

const url = window.location.href.split('?')[0]

Solution 4 - Javascript

Use indexOf

var url = "http://mysite.com/somedir/somefile/?aa";

if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}

Solution 5 - Javascript

You can concat origin and pathname, if theres present a port such as example.com:80, that will be included as well.

location.origin + location.pathname

Solution 6 - Javascript

Just one more alternative using URL

var theUrl = new URL(window.location.href);
theUrl.search = ""; //Remove any params
theUrl //as URL object
theUrl.href //as a string

Solution 7 - Javascript

var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"    

url.substring(0,url.indexOf("?"));

Solution 8 - Javascript

You can use a regular expression: window.location.href.match(/^[^\#\?]+/)[0]

Solution 9 - Javascript

Use the URL() constructor, then extract and concatenate the origin and pathname. This will automatically strip the search (aka query) parameters from the url, leaving the scheme, domain, port and pathname only.

const url = new URL('http://localhost:8080/index.html?search=foo&other=bar');
console.log(url.origin + url.pathname);

Solution 10 - Javascript

If you look at the documentation you can take just the properties you're interested in from the window object i.e.

protocol + '//' + hostname + pathname

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTylerView Question on Stackoverflow
Solution 1 - JavascriptlonesomedayView Answer on Stackoverflow
Solution 2 - JavascriptOddmanView Answer on Stackoverflow
Solution 3 - JavascriptRobo RickView Answer on Stackoverflow
Solution 4 - JavascriptNiklasView Answer on Stackoverflow
Solution 5 - JavascriptAamirRView Answer on Stackoverflow
Solution 6 - JavascriptdigitalWestieView Answer on Stackoverflow
Solution 7 - JavascriptHeadshotaView Answer on Stackoverflow
Solution 8 - JavascriptMicView Answer on Stackoverflow
Solution 9 - Javascriptzr0gravity7View Answer on Stackoverflow
Solution 10 - JavascriptplanetjonesView Answer on Stackoverflow