diff --git a/nominatim/server/falcon/server.py b/nominatim/server/falcon/server.py index 4295b3f3..080650e7 100644 --- a/nominatim/server/falcon/server.py +++ b/nominatim/server/falcon/server.py @@ -66,7 +66,12 @@ def get_application(project_dir: Path, api = NominatimAPIAsync(project_dir, environ) app = App(cors_enable=api.config.get_bool('CORS_NOACCESSCONTROL')) + + legacy_urls = api.config.get_bool('SERVE_LEGACY_URLS') for name, func in api_impl.ROUTES: - app.add_route('/' + name, EndpointWrapper(func, api)) + endpoint = EndpointWrapper(func, api) + app.add_route(f"/{name}", endpoint) + if legacy_urls: + app.add_route(f"/{name}.php", endpoint) return app diff --git a/nominatim/server/sanic/server.py b/nominatim/server/sanic/server.py index 98e6b6e2..81d62faf 100644 --- a/nominatim/server/sanic/server.py +++ b/nominatim/server/sanic/server.py @@ -62,7 +62,11 @@ def get_application(project_dir: Path, from sanic_cors import CORS # pylint: disable=import-outside-toplevel CORS(app) + legacy_urls = app.ctx.api.config.get_bool('SERVE_LEGACY_URLS') for name, func in api_impl.ROUTES: - app.add_route(_wrap_endpoint(func), f"/{name}", name=f"v1_{name}_simple") + endpoint = _wrap_endpoint(func) + app.add_route(endpoint, f"/{name}", name=f"v1_{name}_simple") + if legacy_urls: + app.add_route(endpoint, f"/{name}.php", name=f"v1_{name}_legacy") return app diff --git a/nominatim/server/starlette/server.py b/nominatim/server/starlette/server.py index dfbdc502..de9a3f87 100644 --- a/nominatim/server/starlette/server.py +++ b/nominatim/server/starlette/server.py @@ -61,8 +61,12 @@ def get_application(project_dir: Path, config = Configuration(project_dir, environ) routes = [] + legacy_urls = config.get_bool('SERVE_LEGACY_URLS') for name, func in api_impl.ROUTES: - routes.append(Route(f"/{name}", endpoint=_wrap_endpoint(func))) + endpoint = _wrap_endpoint(func) + routes.append(Route(f"/{name}", endpoint=endpoint)) + if legacy_urls: + routes.append(Route(f"/{name}.php", endpoint=endpoint)) middleware = [] if config.get_bool('CORS_NOACCESSCONTROL'): diff --git a/settings/env.defaults b/settings/env.defaults index 3115f438..84cd24f1 100644 --- a/settings/env.defaults +++ b/settings/env.defaults @@ -204,6 +204,11 @@ NOMINATIM_LOOKUP_MAX_COUNT=50 # Set to zero to disable polygon output. NOMINATIM_POLYGON_OUTPUT_MAX_TYPES=1 +# Offer backwards compatible PHP URLs. +# When running one of the Python enignes, they will add endpoint aliases +# under .php +NOMINATIM_SERVE_LEGACY_URLS=yes + ### Log settings # # The following options allow to enable logging of API requests.