Проблема виртуального каталога (приложения) без учета регистра 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 обратно. Надеюсь, пока этот пост поможет.

Другие вопросы по тегам