diff --git a/config/routes.rb b/config/routes.rb
index adaf6a1e35e0192c114ddbb0411664739c1dbfc3..e597c61e0a20cbb78255d9d95c07cd3959953911 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do
     project_root: Gitlab.config.git_base_path,
     upload_pack:  Gitlab.config.git_upload_pack,
     receive_pack: Gitlab.config.git_receive_pack
-  }), at: '/:path', constraints: { path: /[\w-]+\.git/ }
+  }), at: '/:path', constraints: { path: /[\w\.-]+\.git/ }
 
   #
   # Help
diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb
index 766e3874555ebba12221d2c536628af104ac171c..dd5a9becafc386c0644a0be302b65af4f772f42f 100644
--- a/lib/gitlab/backend/grack_auth.rb
+++ b/lib/gitlab/backend/grack_auth.rb
@@ -18,7 +18,7 @@ module Grack
       @env['SCRIPT_NAME'] = ""
 
       # Find project by PATH_INFO from env
-      if m = /^\/([\w-]+).git/.match(@request.path_info).to_a
+      if m = /^\/([\w\.-]+)\.git/.match(@request.path_info).to_a
         self.project = Project.find_by_path(m.last)
         return false unless project
       end
@@ -65,7 +65,7 @@ module Grack
       end
       # Need to reset seek point
       @request.body.rewind
-      /refs\/heads\/([\w-]+)/.match(input).to_a.first
+      /refs\/heads\/([\w\.-]+)/.match(input).to_a.first
     end
 
     protected