diff --git a/opentech/apply/funds/models/mixins.py b/opentech/apply/funds/models/mixins.py
index 6ca8ac3e050ff521119c9363b663f37fdaababd7..388e238497eb6676d2de8544ecb30afc65446590 100644
--- a/opentech/apply/funds/models/mixins.py
+++ b/opentech/apply/funds/models/mixins.py
@@ -15,7 +15,13 @@ from opentech.apply.stream_forms.files import StreamFieldFile
 __all__ = ['AccessFormData']
 
 
-submission_storage = get_storage_class(getattr(settings, 'PRIVATE_FILE_STORAGE', None))()
+private_file_storage = getattr(settings, 'PRIVATE_FILE_STORAGE', None)
+submission_storage_class = get_storage_class(private_file_storage)
+
+if private_file_storage:
+    submission_storage = submission_storage_class(is_submission=True)
+else:
+    submission_storage = submission_storage_class()
 
 
 class UnusedFieldException(Exception):
diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index f263fef557ac183416a2344ba032240b3a9b4aaa..8b9b7f7d383db612bb4623f2f6b39040987225aa 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -62,13 +62,7 @@ from .tables import (
 from .workflow import STAGE_CHANGE_ACTIONS, PHASES_MAPPING, review_statuses
 from .permissions import is_user_has_access_to_view_submission
 
-private_file_storage = getattr(settings, 'PRIVATE_FILE_STORAGE', None)
-submission_storage_class = get_storage_class(private_file_storage)
-
-if private_file_storage:
-    submission_storage = submission_storage_class(internal_url=False)
-else:
-    submission_storage = submission_storage_class()
+submission_storage = get_storage_class(getattr(settings, 'PRIVATE_FILE_STORAGE', None))
 
 
 class BaseAdminSubmissionsTable(SingleTableMixin, FilterView):
diff --git a/opentech/storage_backends.py b/opentech/storage_backends.py
index d8404ca5a858157d02435fb3aa2c3880fd91e8c9..3a347b4cbf1c2194e2e77dc7fbac240935eb6e62 100644
--- a/opentech/storage_backends.py
+++ b/opentech/storage_backends.py
@@ -29,20 +29,18 @@ class PrivateMediaStorage(S3Boto3Storage):
     file_overwrite = False
     querystring_auth = True
     url_protocol = 'https:'
-    internal_url = True
+    is_submission = False
 
     def url(self, name, parameters=None, expire=None):
-        if self.internal_url:
+        if self.is_submission:
             try:
                 name_parts = name.split('/')
-                # Create and return internal URL only for submissions
-                if name_parts[0] == 'submission':
-                    return reverse(
-                        'apply:submissions:private_media_redirect', kwargs={
-                            'submission_id': name_parts[1], 'field_id': name_parts[2],
-                            'file_name': name_parts[3]
-                        }
-                    )
+                return reverse(
+                    'apply:submissions:private_media_redirect', kwargs={
+                        'submission_id': name_parts[1], 'field_id': name_parts[2],
+                        'file_name': name_parts[3]
+                    }
+                )
             except IndexError:
                 pass