2013-09-14 2 views
0

Я написал простые правила перезаписи, которые переписывают ссылки расширения ccm (используя исходящие правила) и разрешают полный путь .cfm с эквивалентным входящим правилом. Пример:URL Rewrite для удаления расширения файла приводит к тому, что страница никогда не загружается полностью

Эта исходящая ссылка:

http://mysite/section/page

Решает на этот полный путь:

http://mysite/section/page.cfm

Когда я посещаю ссылку без расширения файла, в любом браузере, страница отображает на экране, но браузер все еще, кажется, «ждет», чтобы страница закончила загрузку (получите этот вращающийся круг на вкладке браузера, в то время как Firefox говорит «передача данных с mywebsite ...»)

Примерно через 5 минут после загрузки страницы браузер перестанет пытаться загрузить и отображает сообщение «не может отобразить страницу». Я использовал панель NET Firebug, чтобы узнать, что происходит, и в основном страница никогда не заканчивает загрузку (размер файла остается 0kb, пока браузер не упадет).

Если я перехожу на полную страницу пути, например. http://mysite/section/page.cfm, тогда страница загружается полностью в пределах 20 мс, а Firebug дает мне размер страницы.

Может кто-нибудь спросить, что происходит и как это исправить?

ответ

5

OK Я несколько решил это или фактически решил его.

Его проблема с ColdFusion. Если кто-либо еще сталкивается с этим, вот что вы делаете:

  1. Создайте страницу Application.cfc.
  2. Добавьте эту функцию в свой компонент:
<cffunction name="onRequestEnd"> 
    <cfheader name="Content-Length" value="#Len(getPageContext().getOut().getString())#" /> 
    <cfset getPageContext().flush()> 
</cffunction>


Так что же происходит в том, что мы устанавливаем заголовок Content-Length до нужного размера, потому что ColdFusion портит его, если вы позволите это сделать он сам. Исключением для бесконечной загрузки страницы является установка getPageContext().flush() после установки Content-Length, чтобы браузер получал все содержимое страницы.

Откровенно говоря, я сделал это с некоторыми поисковыми и случайными хаками Google. Возможно, это неправильный способ решения проблемы (потому что в Firebug говорится, что происходит 500 ошибок), но, похоже, это работает.

+0

Какие версии CF применимы? –

+0

Это стандартный код Java, поэтому он должен работать в большинстве версий CF, о которых я думаю. Но я использую CF10 –

+1

Этот код почти наверняка будет работать на всех с CF6 вверх, однако он потенциально имеет отношение к исходной проблеме, что CF10 использует другой движок сервлета (модифицированный Tomcat) по сравнению с предыдущими версиями (JRun); не уверен, что соединитель тоже изменился, и/или если в этом вопросе может быть часть заказа модуля. –

Смежные вопросы