Browse Source

Fix root redirection (#4167)

* Fix root redirection
#fix https://github.com/FreshRSS/FreshRSS/issues/4126

* Smarter
Alexandre Alapetite 4 years ago
parent
commit
88b934da8b
3 changed files with 15 additions and 10 deletions
  1. 8 9
      lib/Minz/Request.php
  2. 1 1
      lib/Minz/Url.php
  3. 6 0
      p/index.php

+ 8 - 9
lib/Minz/Request.php

@@ -147,9 +147,9 @@ class Minz_Request {
 	/**
 	 * Try to guess the base URL from $_SERVER information
 	 *
-	 * @return string base url (e.g. http://example.com/)
+	 * @return string base url (e.g. http://example.com)
 	 */
-	public static function guessBaseUrl() {
+	public static function guessBaseUrl(): string {
 		$protocol = self::extractProtocol();
 		$host = self::extractHost();
 		$port = self::extractPortForUrl();
@@ -225,12 +225,11 @@ class Minz_Request {
 		return '';
 	}
 
-	/**
-	 * @return string
-	 */
-	private static function extractPath() {
-		if ('' != $path = ($_SERVER['REQUEST_URI'] ?? '')) {
-			return '/' === substr($path, -1) ? substr($path, 0, -1) : dirname($path);
+	private static function extractPath(): string {
+		$path = $_SERVER['REQUEST_URI'] ?? '';
+		if ($path != '') {
+			$path = parse_url($path, PHP_URL_PATH);
+			return substr($path, -1) === '/' ? rtrim($path, '/') : dirname($path);
 		}
 		return '';
 	}
@@ -343,7 +342,7 @@ class Minz_Request {
 		$url['params']['rid'] = self::requestId();
 
 		if ($redirect) {
-			header('Location: ' . Minz_Url::display($url, 'php'));
+			header('Location: ' . Minz_Url::display($url, 'php', 'root'));
 			exit();
 		} else {
 			self::_controllerName($url['c']);

+ 1 - 1
lib/Minz/Url.php

@@ -28,7 +28,7 @@ class Minz_Url {
 			$url_string = Minz_Request::getBaseUrl();
 			if (strlen($url_string) < strlen('http://a.bc')) {
 				$url_string = Minz_Request::guessBaseUrl();
-				if (PUBLIC_RELATIVE === '..') {
+				if (PUBLIC_RELATIVE === '..' && preg_match('%' . PUBLIC_TO_INDEX_PATH . '(/|$)%', $url_string)) {
 					//TODO: Implement proper resolver of relative parts such as /test/./../
 					$url_string = dirname($url_string);
 				}

+ 6 - 0
p/index.php

@@ -0,0 +1,6 @@
+<?php
+require(__DIR__ . '/../constants.php');
+require(LIB_PATH . '/lib_rss.php');	//Includes class autoloader
+
+FreshRSS_Context::initSystem();
+Minz_Request::forward(['c' => 'index', 'a' => 'index'], true);