Проблема виртуального каталога (приложения) без учета регистра IIS
У меня есть приложение в IIS, URL-адрес которого " http://localhost/MAIN", обратите внимание на виртуальный каталог в верхнем регистре.
Когда я пытаюсь получить доступ к этому URL-адресу, используя имя приложения / имя виртуального каталога в нижнем регистре, например " http://localhost/main", тогда приложение превращает URL-адрес в " http://localhost/MAIN/Account/Login?ReturnUrl=%2Fmain"обратите внимание на"%2fmain". После входа в систему меня перенаправляют обратно на страницу входа / маршрут.
Я думаю, что IIS должен вернуть 404 для имени виртуального каталога в нижнем регистре.
Может кто-нибудь пролить некоторый свет на это?
1 ответ
Была такая же проблема
Измените strpos для stripos в функции getUrlencodedPrefix, расположенной по адресу vendor\symfony\http-foundation\Request.php.
У нас были проблемы с доступом к нашему приложению laravel в IIS с помощью fast-cgi.
URL-адрес приложения http://server/myApp указывает на общую папку приложения и 90% времени работает, но по какой-то причине после нескольких дней работы он внезапно перестает работать с ошибкой маршрута [в RouteCollection.php (строка 179).)]. Единственный способ получить доступ обратно через тот же URL-адрес, но строчную букву "А" http://server/myapp. Через несколько дней он переключается обратно в верхний регистр "А".
Проблема усугубилась около 2 дней назад, когда она начала переключаться почти на почасовой основе.
Мы отследили проблему до строки vendor \ symfony \ http-foundation \ Request.php 2043 [strpos, изменив ее на stripos], исправили проблему.
Основной причиной является обработка fast-cgi с помощью переменной _SERVER['SCRIPT_NAME']. Когда пул приложений перезапускает процесс php-cgi.exe, первый запрос к процессу установит для этой переменной значение чувствительной к регистру части виртуальной папки. С этого момента matchAgainstRoutes (vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php) не будет работать, так как регистр не будет совпадать.
Я ищу долгосрочное решение, поскольку любое обновление в Symphony Core или Laravel, скорее всего, вернет этот FIX обратно. Надеюсь, пока этот пост поможет.