diff --git a/backend/config/settings/site_specific.py b/backend/config/settings/site_specific.py index 5416f724a..b2d0e3e34 100644 --- a/backend/config/settings/site_specific.py +++ b/backend/config/settings/site_specific.py @@ -122,3 +122,8 @@ class MetagridFrontendSettings(BaseSettings): examples=["UA-12345678-1"], description="The Google Analytics tracking ID for tracking user interactions.", ) + HOST_SUBPATH: str = Field( + default="/", + examples=["/", "/metagrid"], + description="The subpath at which metagrid is hosted.", + ) diff --git a/backend/config/settings/static.py b/backend/config/settings/static.py index a5de1fe74..100dd97f0 100644 --- a/backend/config/settings/static.py +++ b/backend/config/settings/static.py @@ -343,3 +343,6 @@ class DjangoStaticSettings(BaseSettings): STATICFILES_STORAGE: str = ( "whitenoise.storage.CompressedManifestStaticFilesStorage" ) + + # https://docs.djangoproject.com/en/5.1/ref/settings/#force-script-name + FORCE_SCRIPT_NAME: Optional[str] = None diff --git a/backend/config/wsgi.py b/backend/config/wsgi.py index f75f058d6..c915ae297 100755 --- a/backend/config/wsgi.py +++ b/backend/config/wsgi.py @@ -17,6 +17,7 @@ import os import sys +from django.conf import settings from django.core.wsgi import get_wsgi_application app_path = os.path.abspath( @@ -32,7 +33,19 @@ # This application object is used by any WSGI server configured to use this # file. This includes Django's development server, if the WSGI_APPLICATION # setting points here. -application = get_wsgi_application() -# Apply WSGI middleware here. -# from helloworld.wsgi import HelloWorldApplication -# application = HelloWorldApplication(application) +_application = get_wsgi_application() + + +def application(environ, start_response): + script_name = settings.FORCE_SCRIPT_NAME + if script_name: + environ["SCRIPT_NAME"] = script_name + path_info = environ["PATH_INFO"] + if path_info.startswith(script_name): + environ["PATH_INFO"] = path_info[len(script_name) :] + + scheme = environ.get("HTTP_X_SCHEME", "") + if scheme: + environ["wsgi.url_scheme"] = scheme + + return _application(environ, start_response) diff --git a/frontend/index.html b/frontend/index.html index da3f627a6..2f2ee6be8 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,18 +1,17 @@ - - + - + - + - +
- +