diff --git a/app/assets/javascripts/emoji/awards_app/store/actions.js b/app/assets/javascripts/emoji/awards_app/store/actions.js
index e7c49b2a4f9a72f89f4789982aa68882653394c4..f03402092486f306e461efacd1822c5dcb170b1c 100644
--- a/app/assets/javascripts/emoji/awards_app/store/actions.js
+++ b/app/assets/javascripts/emoji/awards_app/store/actions.js
@@ -1,6 +1,7 @@
 import * as Sentry from '@sentry/browser';
 import axios from '~/lib/utils/axios_utils';
 import { normalizeHeaders } from '~/lib/utils/common_utils';
+import { joinPaths } from '~/lib/utils/url_utility';
 import { __ } from '~/locale';
 import showToast from '~/vue_shared/plugins/global_toast';
 import {
@@ -16,7 +17,9 @@ export const fetchAwards = async ({ commit, dispatch, state }, page = '1') => {
   if (!window.gon?.current_user_id) return;
 
   try {
-    const { data, headers } = await axios.get(state.path, { params: { per_page: 100, page } });
+    const { data, headers } = await axios.get(joinPaths(gon.relative_url_root || '', state.path), {
+      params: { per_page: 100, page },
+    });
     const normalizedHeaders = normalizeHeaders(headers);
     const nextPage = normalizedHeaders['X-NEXT-PAGE'];
 
@@ -35,13 +38,15 @@ export const toggleAward = async ({ commit, state }, name) => {
 
   try {
     if (award) {
-      await axios.delete(`${state.path}/${award.id}`);
+      await axios.delete(joinPaths(gon.relative_url_root || '', `${state.path}/${award.id}`));
 
       commit(REMOVE_AWARD, award.id);
 
       showToast(__('Award removed'));
     } else {
-      const { data } = await axios.post(state.path, { name });
+      const { data } = await axios.post(joinPaths(gon.relative_url_root || '', state.path), {
+        name,
+      });
 
       commit(ADD_NEW_AWARD, data);
 
diff --git a/spec/frontend/emoji/awards_app/store/actions_spec.js b/spec/frontend/emoji/awards_app/store/actions_spec.js
index 137fcb742ae5d338489f0dd1efda93d71bf8d203..e96920d1112b4bec2cefa6d15fe56cd7864c8ee8 100644
--- a/spec/frontend/emoji/awards_app/store/actions_spec.js
+++ b/spec/frontend/emoji/awards_app/store/actions_spec.js
@@ -35,27 +35,36 @@ describe('Awards app actions', () => {
     });
 
     describe('success', () => {
-      beforeEach(() => {
-        mock
-          .onGet('/awards', { params: { per_page: 100, page: '1' } })
-          .reply(200, ['thumbsup'], { 'x-next-page': '2' });
-        mock.onGet('/awards', { params: { per_page: 100, page: '2' } }).reply(200, ['thumbsdown']);
-      });
+      describe.each`
+        relativeRootUrl
+        ${null}
+        ${'/gitlab'}
+      `('with relative_root_url as $relativeRootUrl', ({ relativeRootUrl }) => {
+        beforeEach(() => {
+          window.gon = { relative_url_root: relativeRootUrl };
+          mock
+            .onGet(`${relativeRootUrl || ''}/awards`, { params: { per_page: 100, page: '1' } })
+            .reply(200, ['thumbsup'], { 'x-next-page': '2' });
+          mock
+            .onGet(`${relativeRootUrl || ''}/awards`, { params: { per_page: 100, page: '2' } })
+            .reply(200, ['thumbsdown']);
+        });
 
-      it('commits FETCH_AWARDS_SUCCESS', async () => {
-        window.gon = { current_user_id: 1 };
+        it('commits FETCH_AWARDS_SUCCESS', async () => {
+          window.gon.current_user_id = 1;
 
-        await testAction(
-          actions.fetchAwards,
-          '1',
-          { path: '/awards' },
-          [{ type: 'FETCH_AWARDS_SUCCESS', payload: ['thumbsup'] }],
-          [{ type: 'fetchAwards', payload: '2' }],
-        );
-      });
+          await testAction(
+            actions.fetchAwards,
+            '1',
+            { path: '/awards' },
+            [{ type: 'FETCH_AWARDS_SUCCESS', payload: ['thumbsup'] }],
+            [{ type: 'fetchAwards', payload: '2' }],
+          );
+        });
 
-      it('does not commit FETCH_AWARDS_SUCCESS when user signed out', async () => {
-        await testAction(actions.fetchAwards, '1', { path: '/awards' }, [], []);
+        it('does not commit FETCH_AWARDS_SUCCESS when user signed out', async () => {
+          await testAction(actions.fetchAwards, '1', { path: '/awards' }, [], []);
+        });
       });
     });
 
@@ -85,81 +94,91 @@ describe('Awards app actions', () => {
       mock.restore();
     });
 
-    describe('adding new award', () => {
-      describe('success', () => {
-        beforeEach(() => {
-          mock.onPost('/awards').reply(200, { id: 1 });
-        });
-
-        it('commits ADD_NEW_AWARD', async () => {
-          testAction(actions.toggleAward, null, { path: '/awards', awards: [] }, [
-            { type: 'ADD_NEW_AWARD', payload: { id: 1 } },
-          ]);
-        });
-      });
-
-      describe('error', () => {
-        beforeEach(() => {
-          mock.onPost('/awards').reply(500);
-        });
-
-        it('calls Sentry.captureException', async () => {
-          await testAction(
-            actions.toggleAward,
-            null,
-            { path: '/awards', awards: [] },
-            [],
-            [],
-            () => {
-              expect(Sentry.captureException).toHaveBeenCalled();
-            },
-          );
-        });
+    describe.each`
+      relativeRootUrl
+      ${null}
+      ${'/gitlab'}
+    `('with relative_root_url as $relativeRootUrl', ({ relativeRootUrl }) => {
+      beforeEach(() => {
+        window.gon = { relative_url_root: relativeRootUrl };
       });
-    });
-
-    describe('removing a award', () => {
-      const mockData = { id: 1, name: 'thumbsup', user: { id: 1 } };
 
-      describe('success', () => {
-        beforeEach(() => {
-          mock.onDelete('/awards/1').reply(200);
+      describe('adding new award', () => {
+        describe('success', () => {
+          beforeEach(() => {
+            mock.onPost(`${relativeRootUrl || ''}/awards`).reply(200, { id: 1 });
+          });
+
+          it('commits ADD_NEW_AWARD', async () => {
+            testAction(actions.toggleAward, null, { path: '/awards', awards: [] }, [
+              { type: 'ADD_NEW_AWARD', payload: { id: 1 } },
+            ]);
+          });
         });
 
-        it('commits REMOVE_AWARD', async () => {
-          testAction(
-            actions.toggleAward,
-            'thumbsup',
-            {
-              path: '/awards',
-              currentUserId: 1,
-              awards: [mockData],
-            },
-            [{ type: 'REMOVE_AWARD', payload: 1 }],
-          );
+        describe('error', () => {
+          beforeEach(() => {
+            mock.onPost(`${relativeRootUrl || ''}/awards`).reply(500);
+          });
+
+          it('calls Sentry.captureException', async () => {
+            await testAction(
+              actions.toggleAward,
+              null,
+              { path: '/awards', awards: [] },
+              [],
+              [],
+              () => {
+                expect(Sentry.captureException).toHaveBeenCalled();
+              },
+            );
+          });
         });
       });
 
-      describe('error', () => {
-        beforeEach(() => {
-          mock.onDelete('/awards/1').reply(500);
+      describe('removing a award', () => {
+        const mockData = { id: 1, name: 'thumbsup', user: { id: 1 } };
+
+        describe('success', () => {
+          beforeEach(() => {
+            mock.onDelete(`${relativeRootUrl || ''}/awards/1`).reply(200);
+          });
+
+          it('commits REMOVE_AWARD', async () => {
+            testAction(
+              actions.toggleAward,
+              'thumbsup',
+              {
+                path: '/awards',
+                currentUserId: 1,
+                awards: [mockData],
+              },
+              [{ type: 'REMOVE_AWARD', payload: 1 }],
+            );
+          });
         });
 
-        it('calls Sentry.captureException', async () => {
-          await testAction(
-            actions.toggleAward,
-            'thumbsup',
-            {
-              path: '/awards',
-              currentUserId: 1,
-              awards: [mockData],
-            },
-            [],
-            [],
-            () => {
-              expect(Sentry.captureException).toHaveBeenCalled();
-            },
-          );
+        describe('error', () => {
+          beforeEach(() => {
+            mock.onDelete(`${relativeRootUrl || ''}/awards/1`).reply(500);
+          });
+
+          it('calls Sentry.captureException', async () => {
+            await testAction(
+              actions.toggleAward,
+              'thumbsup',
+              {
+                path: '/awards',
+                currentUserId: 1,
+                awards: [mockData],
+              },
+              [],
+              [],
+              () => {
+                expect(Sentry.captureException).toHaveBeenCalled();
+              },
+            );
+          });
         });
       });
     });