diff --git a/app/assets/javascripts/discourse/lib/url.js.es6 b/app/assets/javascripts/discourse/lib/url.js.es6 index 7f2d1bc6c44..ddc964cbad9 100644 --- a/app/assets/javascripts/discourse/lib/url.js.es6 +++ b/app/assets/javascripts/discourse/lib/url.js.es6 @@ -272,7 +272,7 @@ const DiscourseURL = Ember.Object.createWithMixins({ // This has been extracted so it can be tested. origin: function() { - return window.location.origin; + return window.location.origin + (Discourse.BaseUri === "/" ? '' : Discourse.BaseUri); }, /** diff --git a/test/javascripts/lib/url-test.js.es6 b/test/javascripts/lib/url-test.js.es6 index 0598c32e543..39941fd00e5 100644 --- a/test/javascripts/lib/url-test.js.es6 +++ b/test/javascripts/lib/url-test.js.es6 @@ -16,3 +16,10 @@ test("isInternal with a HTTPS url", function() { sandbox.stub(DiscourseURL, "origin").returns("https://eviltrout.com"); ok(DiscourseURL.isInternal("http://eviltrout.com/monocle"), "HTTPS urls match HTTP urls"); }); + +test("isInternal on subfolder install", function() { + sandbox.stub(DiscourseURL, "origin").returns("http://eviltrout.com/forum"); + not(DiscourseURL.isInternal("http://eviltrout.com"), "the host root is not internal"); + not(DiscourseURL.isInternal("http://eviltrout.com/tophat"), "a url on the same host but on a different folder is not internal"); + ok(DiscourseURL.isInternal("http://eviltrout.com/forum/moustache"), "a url on the same host and on the same folder is internal"); +});