diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-11-16 16:06:10 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-11-16 16:06:10 +0000 |
| commit | 98116b24f349a13d59c9798d52b3efc6d56bfa47 (patch) | |
| tree | 11534671a37ca5f32e723ed8d51d17a663d4fdd8 /app | |
| parent | b972b8c97e1dc2a2c6177a5e17a260f556243431 (diff) | |
| download | webtrees-98116b24f349a13d59c9798d52b3efc6d56bfa47.tar.gz webtrees-98116b24f349a13d59c9798d52b3efc6d56bfa47.tar.bz2 webtrees-98116b24f349a13d59c9798d52b3efc6d56bfa47.zip | |
Fix: routing fails for URLs with port number. Add support for built-in server with pretty URLs.
Diffstat (limited to 'app')
| -rw-r--r-- | app/Helpers/functions.php | 24 | ||||
| -rw-r--r-- | app/Http/Middleware/BaseUrl.php | 7 | ||||
| -rw-r--r-- | app/Http/Middleware/LoadRoutes.php | 2 |
3 files changed, 7 insertions, 26 deletions
diff --git a/app/Helpers/functions.php b/app/Helpers/functions.php index 6c799877f8..0338c820ff 100644 --- a/app/Helpers/functions.php +++ b/app/Helpers/functions.php @@ -167,23 +167,6 @@ function route(string $route_name, array $parameters = []): string $router_container = app(RouterContainer::class); $route = $router_container->getMap()->getRoute($route_name); - // Scheme/user/pass/host needed for absolute URLs. - static $prefix = null; - - if ($prefix === null) { - $base_url = $request->getAttribute('base_url'); - $base_parts = parse_url($base_url); - $prefix = $base_parts['scheme'] . '://'; - if (array_key_exists('user', $base_parts)) { - $prefix .= rawurlencode($base_parts['user']); - if (array_key_exists('pass', $base_parts)) { - $prefix .= ':' . rawurlencode($base_parts['pass']); - } - $prefix .= '@'; - } - $prefix .= $base_parts['host']; - } - // Generate the URL. $url = $router_container->getGenerator()->generate($route_name, $parameters); @@ -194,14 +177,13 @@ function route(string $route_name, array $parameters = []): string // Turn the pretty URL into an ugly one. if ($request->getAttribute('rewrite_urls') !== '1') { + $base_url = $request->getAttribute('base_url'); $path = parse_url($url, PHP_URL_PATH); $parameters = ['route' => $path] + $parameters; - $base_url = $request->getAttribute('base_url'); - $base_path = parse_url($base_url, PHP_URL_PATH) ?? ''; - $url = $base_path . '/index.php'; + $url = $base_url . '/index.php'; } - return Html::url($prefix . $url, $parameters); + return Html::url($url, $parameters); } /** diff --git a/app/Http/Middleware/BaseUrl.php b/app/Http/Middleware/BaseUrl.php index 8f176b5276..d1cc86ee85 100644 --- a/app/Http/Middleware/BaseUrl.php +++ b/app/Http/Middleware/BaseUrl.php @@ -54,10 +54,9 @@ class BaseUrl implements MiddlewareInterface if ($base_url === '') { // Guess the base URL from the request URL. - $base_url = rtrim(explode('index.php', (string) $request_url)[0], '/'); - $request = $request->withAttribute('base_url', $base_url); - - $base_path = parse_url($base_url, PHP_URL_PATH) ?? ''; + $base_url = rtrim(explode('index.php', (string) $request_url)[0], '/'); + $request = $request->withAttribute('base_url', $base_url); + $base_path = parse_url($base_url, PHP_URL_PATH) ?? ''; $request_url = $request_url->withPath($base_path); $request = $request->withUri($request_url); diff --git a/app/Http/Middleware/LoadRoutes.php b/app/Http/Middleware/LoadRoutes.php index 58af6b16c2..aa42bb3679 100644 --- a/app/Http/Middleware/LoadRoutes.php +++ b/app/Http/Middleware/LoadRoutes.php @@ -62,7 +62,7 @@ class LoadRoutes implements MiddlewareInterface public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $base_url = $request->getAttribute('base_url'); - $base_path = parse_url($base_url, PHP_URL_PATH) ?? ''; + $base_path = parse_url($base_url, PHP_URL_PATH); $router_container = new RouterContainer($base_path); // Load the core routing tables. Modules will load their own routes later. |
