diff --git a/config/routes/group.rb b/config/routes/group.rb
index 826048ba196cf9290cd624c4022f034860bbce2e..faec3f0ad5646890b03568fabdbbca7ef3ea7696 100644
--- a/config/routes/group.rb
+++ b/config/routes/group.rb
@@ -12,26 +12,26 @@ constraints(GroupUrlConstrainer.new) do
   end
 end
 
-scope constraints: { id: /[a-zA-Z.0-9_\-]+(?<!\.atom)/ } do
-  resources :groups, except: [:show] do
-    member do
-      get :issues
-      get :merge_requests
-      get :projects
-      get :activity
-    end
+resources :groups, only: [:index, :new, :create]
 
-    scope module: :groups do
-      resources :group_members, only: [:index, :create, :update, :destroy], concerns: :access_requestable do
-        post :resend_invite, on: :member
-        delete :leave, on: :collection
-      end
-
-      resource :avatar, only: [:destroy]
-      resources :milestones, constraints: { id: /[^\/]+/ }, only: [:index, :show, :update, :new, :create]
+scope(path: 'groups/:id', controller: :groups) do
+  get :edit, as: :edit_group
+  get :issues, as: :issues_group
+  get :merge_requests, as: :merge_requests_group
+  get :projects, as: :projects_group
+  get :activity, as: :activity_group
+end
 
-      resources :labels, except: [:show], constraints: { id: /\d+/ }
-    end
+scope(path: 'groups/:group_id', module: :groups, as: :group) do
+  resources :group_members, only: [:index, :create, :update, :destroy], concerns: :access_requestable do
+    post :resend_invite, on: :member
+    delete :leave, on: :collection
   end
-  get 'groups/:id' => 'groups#show', as: :group_canonical
+
+  resource :avatar, only: [:destroy]
+  resources :milestones, constraints: { id: /[^\/]+/ }, only: [:index, :show, :update, :new, :create]
+  resources :labels, except: [:show], constraints: { id: /\d+/ }
 end
+
+# Must be last route in this file
+get 'groups/:id' => 'groups#show', as: :group_canonical