@@ -1883,6 +1883,62 @@ public static function getBaseUrlData()
18831883 ];
18841884 }
18851885
1886+ /**
1887+ * @dataProvider baseUriDetectionOnIisWithRewriteData
1888+ */
1889+ public function testBaseUriDetectionOnIisWithRewrite (array $ server , string $ expectedBaseUrl , string $ expectedPathInfo )
1890+ {
1891+ $ request = new Request ([], [], [], [], [], $ server );
1892+
1893+ self ::assertSame ($ expectedBaseUrl , $ request ->getBaseUrl ());
1894+ self ::assertSame ($ expectedPathInfo , $ request ->getPathInfo ());
1895+ }
1896+
1897+ public static function baseUriDetectionOnIisWithRewriteData (): \Generator
1898+ {
1899+ yield 'No rewrite ' => [
1900+ [
1901+ 'PATH_INFO ' => '/foo/bar ' ,
1902+ 'PHP_SELF ' => '/routingtest/index.php/foo/bar ' ,
1903+ 'REQUEST_URI ' => '/routingtest/index.php/foo/bar ' ,
1904+ 'SCRIPT_FILENAME ' => 'C:/Users/derrabus/Projects/routing-test/public/index.php ' ,
1905+ 'SCRIPT_NAME ' => '/routingtest/index.php ' ,
1906+ ],
1907+ '/routingtest/index.php ' ,
1908+ '/foo/bar ' ,
1909+ ];
1910+
1911+ yield 'Rewrite with correct case ' => [
1912+ [
1913+ 'IIS_WasUrlRewritten ' => '1 ' ,
1914+ 'PATH_INFO ' => '/foo/bar ' ,
1915+ 'PHP_SELF ' => '/routingtest/index.php/foo/bar ' ,
1916+ 'REQUEST_URI ' => '/routingtest/foo/bar ' ,
1917+ 'SCRIPT_FILENAME ' => 'C:/Users/derrabus/Projects/routing-test/public/index.php ' ,
1918+ 'SCRIPT_NAME ' => '/routingtest/index.php ' ,
1919+ 'UNENCODED_URL ' => '/routingtest/foo/bar ' ,
1920+ ],
1921+ '/routingtest ' ,
1922+ '/foo/bar ' ,
1923+ ];
1924+
1925+ // ISS with UrlRewriteModule might report SCRIPT_NAME/PHP_SELF with wrong case
1926+ // see https://github.com/php/php-src/issues/11981
1927+ yield 'Rewrite with case mismatch ' => [
1928+ [
1929+ 'IIS_WasUrlRewritten ' => '1 ' ,
1930+ 'PATH_INFO ' => '/foo/bar ' ,
1931+ 'PHP_SELF ' => '/routingtest/index.php/foo/bar ' ,
1932+ 'REQUEST_URI ' => '/RoutingTest/foo/bar ' ,
1933+ 'SCRIPT_FILENAME ' => 'C:/Users/derrabus/Projects/routing-test/public/index.php ' ,
1934+ 'SCRIPT_NAME ' => '/routingtest/index.php ' ,
1935+ 'UNENCODED_URL ' => '/RoutingTest/foo/bar ' ,
1936+ ],
1937+ '/RoutingTest ' ,
1938+ '/foo/bar ' ,
1939+ ];
1940+ }
1941+
18861942 /**
18871943 * @dataProvider urlencodedStringPrefixData
18881944 */
0 commit comments