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
-
possible duplicate of Remove querystring from URLAlex Angas– Alex Angas2014年01月20日 05:02:07 +00:00Commented Jan 20, 2014 at 5:02
11 Answers 11
This is possible, but you'll have to build it manually from the location object:
location.origin + location.pathname
13 Comments
'//' + location.host + location.pathnamehttp://www.example.com:8080/asdf.html?foo=barlocation.origin, which I believe also addresses @izogfif's concern.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.
8 Comments
window.location.href.split(/[?#]/)[0];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]
1 Comment
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://example.com/somedir/?foo=bar');
console.log(url.origin + url.pathname);
As a note, this type of transformation is usually referred to as normalization, specifically in this case URI Normalization. There may already exist libraries that accomplish this more robustly with more options in your environment.
Comments
Use indexOf
var url = "http://mysite.com/somedir/somefile/?aa";
if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}
1 Comment
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
1 Comment
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
Comments
You can use a regular expression: window.location.href.match(/^[^\#\?]+/)[0]
Comments
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"
url.substring(0,url.indexOf("?"));
1 Comment
url.split('?')[0]You can do this
window.location.origin + window.location.pathname
Comments
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