diff --git a/app/models/post.rb b/app/models/post.rb
index fc2aaf35991..84f2af64702 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -890,7 +890,7 @@ class Post < ActiveRecord::Base
/\/uploads\/#{RailsMultisite::ConnectionManagement.current_db}\//,
/\/original\//,
/\/optimized\//,
- /\/uploads\/short-url\/[a-zA-Z0-9]+\..*/
+ /\/uploads\/short-url\/[a-zA-Z0-9]+(\.[a-z0-9]+)?/
]
fragments ||= Nokogiri::HTML::fragment(self.cooked)
diff --git a/app/models/upload.rb b/app/models/upload.rb
index c25011a53fa..bd1f0796af7 100644
--- a/app/models/upload.rb
+++ b/app/models/upload.rb
@@ -361,7 +361,7 @@ class Upload < ActiveRecord::Base
private
def short_url_basename
- "#{Upload.base62_sha1(sha1)}.#{extension}"
+ "#{Upload.base62_sha1(sha1)}#{extension.present? ? ".#{extension}" : ""}"
end
end
diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb
index acc1ea3d6ab..529306015c0 100644
--- a/spec/models/post_spec.rb
+++ b/spec/models/post_spec.rb
@@ -1234,6 +1234,7 @@ describe Post do
fab!(:audio_upload) { Fabricate(:upload, extension: "ogg") }
fab!(:attachment_upload) { Fabricate(:upload, extension: "csv") }
fab!(:attachment_upload_2) { Fabricate(:upload) }
+ fab!(:attachment_upload_3) { Fabricate(:upload, extension: nil) }
let(:base_url) { "#{Discourse.base_url_no_prefix}#{Discourse.base_uri}" }
let(:video_url) { "#{base_url}#{video_upload.url}" }
@@ -1243,6 +1244,7 @@ describe Post do
<<~RAW
Link
[test|attachment](#{attachment_upload_2.short_url})
+ [test3|attachment](#{attachment_upload_3.short_url})