Документ по умолчанию не обрабатывается, если он не включен в URL
Запуск ColdFusion 9,0,1,274733 на JRun (установка J2EE), Windows Server 2008 R2, Java 1.6.0_22
Кто-нибудь еще имел проблемы с получением документа по умолчанию, index.cfm
работать с ColdFusion? Я предполагаю, что это только проблема из-за нашей установки; другой веб-сервер (IIS) и сервер приложений (ColdFusion). Я не могу представить, что мы единственные, кто использует эту конфигурацию. Мы?
Так вот в чем проблема.
Если мы запрашиваем http://mysite.com/index.cfm это работает.
Если мы запрашиваем http://mysite.com/ он не работает, и мы получаем 404.
Я проверил файл журнала веб-коннектора на нашем сервере IIS и увидел, что он отправляет запрос на наш сервер ColdFusion. Сервер ColdFusion отправляет обратно код ошибки 404, но я не могу понять, почему. У нас есть документ по умолчанию, установленный на нашем сервере IIS для index.cfm
, У нас также есть <welcome-file-list>
включить index.cfm
на нашем сервере приложений (web.xml).
Из журнала нашего веб-коннектора, когда мы НЕ включаем index.cfm
:
2012-11-01 13:37:22 jrISAPI[4544:3600] ***HttpExtensionProc for JRun ISAPI Extension: uri is "/test/"
2012-11-01 13:37:22 jrISAPI[4544:3600] HTTP_HOST: servername
2012-11-01 13:37:22 jrISAPI[4544:3600] filtering /test/ (/test/) HOST=servername
2012-11-01 13:37:22 jrISAPI[4544:3600] filterRequest: no match
2012-11-01 13:37:22 jrISAPI[4544:3600] ExecUrl: request received: URL=/test/
2012-11-01 13:37:22 jrISAPI[4544:3600] ExecUrl Completion: 404, ErrorCode=2, URL=/test/.
Из журнала нашего веб-коннектора, когда мы включаем index.cfm
:
2012-11-01 13:49:02 jrISAPI[9936:3600] ***HttpExtensionProc for JRun ISAPI Extension: uri is "/test/index.cfm"
2012-11-01 13:49:02 jrISAPI[9936:3600] HTTP_HOST: servername
2012-11-01 13:49:02 jrISAPI[9936:3600] filtering /test/index.cfm (/test/index.cfm) HOST=servername
2012-11-01 13:49:02 jrISAPI[9936:3600] filterRequest: matched *.cfm
2012-11-01 13:49:02 jrISAPI[9936:3600] ***IISWorkerThreadProc for JRun ISAPI Extension: uri is "/test/index.cfm"
2012-11-01 13:49:02 jrISAPI[9936:3600] ALL_RAW: Connection: Keep-Alive
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application (553)
2012-11-01 13:49:02 jrISAPI[9936:3600] Headers and Values:
... and much more ...
Мы обошли эту проблему, используя модуль URL Rewrite в IIS для добавления index.cfm
на URL. Это работает, но моя интуиция постоянно говорит мне, что нам не нужно делать это для такой базовой функциональности.
Кто-нибудь еще имеет эту проблему? Как ты справился с этим?
РЕДАКТИРОВАТЬ, добавив еще немного информации
Вот содержимое файла web.config моего сайта с сервера IIS:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="JWildCardHandler" path="*" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="None" />
<add name="hbmxmlHandler" path="*.hbmxml" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
<add name="cfswfHandler" path="*.cfswf" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
<add name="cfrHandler" path="*.cfr" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
<add name="cfcHandler" path="*.cfc" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
<add name="cfmlHandler" path="*.cfml" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
<add name="cfmHandler" path="*.cfm" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
<add name="jwsHandler" path="*.jws" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
<add name="jspHandler" path="*.jsp" verb="*" modules="IsapiModule" scriptProcessor="D:\JRun4\lib\wsconfig\jrun_iis6.dll" resourceType="Either" responseBufferLimit="0" />
</handlers>
<defaultDocument>
<files>
<add value="index.cfm" />
</files>
</defaultDocument>
<staticContent>
<mimeMap fileExtension=".air" mimeType="application/vnd.adobe.air-application-installer-package zip" />
</staticContent>
</system.webServer>
</configuration>
Вот некоторые из содержимого файла с сервера APP web.xml:
<welcome-file-list id="WelcomeFileList_1034546870672">
<welcome-file>index.cfm</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
4 ответа
Я также разместил этот вопрос на форумах Adobe, и он приобрел большую популярность там. Вы можете прочитать все детали здесь.
Похоже, что основная проблема, с которой я столкнулся, заключается в том, что IIS не передавал файл /index.cfm в веб-коннектор, когда обнаружил, что ColdFusion не имеет сопоставления для "/". Это начало работать после того, как я создал пустой (пустой) файл index.cfm на веб-сервере. Я не вспоминаю о необходимости размещать файлы CFM на веб-сервере при использовании распределенного режима в прошлом. Кто-нибудь может подтвердить или опровергнуть, что файлы CFM должны находиться на обоих серверах, чтобы это работало (в любом случае без использования правил перезаписи)?
У меня была такая же проблема после обновления CF с 2016 на 2018/2021. Решение такое: открыть IIS Manager и перейти в Handler Mappings. Здесь найдите записи cfcHandler, cfmHandler, cfmlHandler и щелкните правой кнопкой мыши, отредактируйте их, и вы, вероятно, увидите что-то вроде этого: C:\ColdFusion2021\config\wsconfig\1\isapi_redirect.dll
Убедитесь, что путь обновлен до текущей версии сервера ColdFusion. В моем случае он все еще пытался получить доступ к папке ColdFusion2016, даже если я обновился до 2021.
Это решило проблему для меня.
В IIS Manager попробуйте добавить документ по умолчанию "index.cfm" для вашего сайта.
Я немного опоздал на вечеринку по этому вопросу, но я работал над системой, в которой мне нужно довольно часто переключаться между CF8 и CF10 на одном и том же dev-сервере, поэтому я работал над командным файлом для запуска wsconfig, чтобы сэкономить немного усилий, и я столкнулся с той же проблемой. CF работает нормально, но никогда не обрабатывает index.cfm для / - как указано выше, все отображения были настроены правильно.
Я обнаружил, что wsconfig работает намного надежнее, если вы добавляете каждый сайт под моим именем вместо "-site 0"
Так, например, вручную удалить и переустановить соединители для двух сайтов, работающих на IIS
set CFUSION_HOME=C:\ColdFusion10\cfusion
%CFUSION_HOME%\runtime\bin\wsconfig -uninstall
net start "ColdFusion 10 Application Server"
%CFUSION_HOME%\runtime\bin\wsconfig -ws IIS -site "Default Web Site"
%CFUSION_HOME%\runtime\bin\wsconfig -ws IIS -site "My Website Name"