diff options
| -rw-r--r-- | classes/Config.php | 3 | ||||
| -rw-r--r-- | tests/ConfigTest.php | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/classes/Config.php b/classes/Config.php index be9dd04e8..e9d44063c 100644 --- a/classes/Config.php +++ b/classes/Config.php @@ -490,7 +490,8 @@ class Config { $proto = self::is_server_https() ? 'https' : 'http'; $self_url_path = $proto . '://' . $_SERVER["HTTP_HOST"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); - $self_url_path = preg_replace("/(\/api\/{1,}|\/plugins(.local)?\/.{1,}\/{1,})?(\w+\.php)?(\?.*$)?$/", "", $self_url_path); + $self_url_path = preg_replace("/(\/api\/{1,})?(\w+\.php)?(\?.*$)?$/", "", $self_url_path); + $self_url_path = preg_replace("/(\/plugins(.local))\/.{1,}$/", "", $self_url_path); return rtrim($self_url_path, "/"); } diff --git a/tests/ConfigTest.php b/tests/ConfigTest.php index f65f0060d..8d706c5af 100644 --- a/tests/ConfigTest.php +++ b/tests/ConfigTest.php @@ -116,6 +116,18 @@ final class SelfUrlPathTest extends TestCase { ); } + public function test_self_url_j(): void { + $_SERVER = []; + + $_SERVER["HTTP_HOST"] = "example.com"; + $_SERVER["REQUEST_URI"] = "/tt-rss/plugins.local/example/api/longpath/test.php/reader/api/0/stream/items/ids?n=1000&output=json&s=user/-/state/com.google/starred"; + + $this->assertEquals( + 'http://example.com/tt-rss', + Config::get_self_url(true) + ); + } + public function test_get_self_dir(): void { $this->assertEquals( dirname(__DIR__), # we're in (app)/tests/ |