diff --git a/core/server/config/url.js b/core/server/config/url.js index 3d70b76ba9..543ad13f63 100644 --- a/core/server/config/url.js +++ b/core/server/config/url.js @@ -190,7 +190,9 @@ function urlFor(context, data, absolute) { urlPath = data.nav.url; baseUrl = getBaseUrl(secure); hostname = baseUrl.split('//')[1] + ghostConfig.paths.subdir; - if (urlPath.indexOf(hostname) > -1 && urlPath.indexOf('.' + hostname) === -1) { + if (urlPath.indexOf(hostname) > -1 + && urlPath.indexOf('.' + hostname) === -1 + && urlPath.indexOf('mailto:') !== 0) { // make link relative to account for possible // mismatch in http/https etc, force absolute // do not do so if link is a subdomain of blog url diff --git a/core/test/unit/config_spec.js b/core/test/unit/config_spec.js index d129665451..61589671ac 100644 --- a/core/test/unit/config_spec.js +++ b/core/test/unit/config_spec.js @@ -382,6 +382,10 @@ describe('Config', function () { config.set({url: 'http://my-ghost-blog.com/blog'}); testData = {nav: {url: 'http://my-ghost-blog.com/blog/short-and-sweet/'}}; config.urlFor(testContext, testData).should.equal('http://my-ghost-blog.com/blog/short-and-sweet/'); + + config.set({url: 'http://my-ghost-blog.com/'}); + testData = {nav: {url: 'mailto:marshmallow@my-ghost-blog.com'}}; + config.urlFor(testContext, testData).should.equal('mailto:marshmallow@my-ghost-blog.com'); }); it('should return other known paths when requested', function () {