URL Redirect работает нормально, но при перезаписи выдает 404

Я видел похожие проблемы, но ни одна из них, похоже, не соответствует моей проблеме сейчас...

У меня есть модуль url-rewrite-module IIS7, и я пытаюсь установить то, что я считаю «простой» перезаписью. Вот что я использую:

            <rule name="PPConnectDesigner" enabled="true" stopProcessing="true">
                <match url="^en/planetpress_connect_designer/(.*?).(html|htm)$" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="Rewrite" url="/robohelp/server?area=en&amp;mgr=agm&amp;agt=wsm&amp;wnd=Connect Designer|defaultwindow&amp;tpc=/robohelp/robo/server/en/projects/Connect Designer/Designer/{R:1}.htm&amp;RINoLog28301=T&amp;ctxid=&amp;project=Connect Designer" appendQueryString="true" logRewrittenUrl="false" />
            </rule>

Это дает мне ошибку 404, а в подробной информации об ошибке обработчик указан как StaticFile, а код ошибки - 0x80070002 ... однако запрошенный URL-адрес является правильным, если я просто скопирую его со страницы ошибки и вставлю в другую вкладку браузера, все работает нормально.

Кроме того, если я изменю правило с перезаписи на перенаправление, оно работает отлично!

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Одна вещь, которую я понял, это то, что у меня есть некоторые правила, которые работают с переписыванием. И, помимо того факта, что те, которые работают, указывают на файлы, которые не являются html (у меня есть CSS и какой-то javascript), есть только одна очень четкая разница: те, которые не работают, указывают на файл. HTML-страница, обслуживаемая приложением Tomcat (в частности, сервером RoboHelp). Мне интересно, если это не относится к делу: что, если перенаправление IIS не видит страницу, обслуживаемую tomcat, тогда как у моего браузера с этим проблем нет?


person Évelyne Lachance    schedule 17.01.2014    source источник


Ответы (2)


Вы можете проверить журналы iis. Они должны сказать вам, какой путь iis пытался обслуживать, когда происходит ошибка 404.

person Mike    schedule 24.01.2014
comment
Журнал еще более бесполезен, чем страница состояния, которую я получаю при локальном доступе к моему чистому URL-адресу - все, что он говорит, это то, что это 404 с временными рамками и моим пользовательским агентом. Не очень полезно. - person Évelyne Lachance; 26.01.2014

rewrite является внутренним, на том же сервере, поэтому сервер сам ищет страницу и не просит tomcat искать ее.

всегда используйте перенаправление, если вы уже делаете URL-адрес видимым для пользователя

http://forums.iis.net/t/1174487.aspx?Как+делать+URL+переписать+отличиться+от+HTTP+перенаправить+

person Atul Gupta    schedule 26.01.2014
comment
Моя цель — сделать чистые URL-адреса, поэтому я хочу переписать их. Обратите внимание, что сам tomcat находится на том же локальном сервере (но я полагаю, что IIS является сервером, а Tomcat также является сервером, поэтому кросс-коммуникация не работает). Есть ли обходной путь (даже с использованием другого программного обеспечения для перезаписи) или я вынужден показывать эти уродливые длинные URL-адреса своим посетителям? - person Évelyne Lachance; 26.01.2014
comment
писать перенаправления с красивых на уродливые URL-адреса в tomcat и использовать красивые URL-адреса везде в iis. Кроме того, вы можете подумать о переименовании адреса вашего сервера tomcat из robohelp в help или h или что-нибудь красивое. - person Atul Gupta; 28.01.2014
comment
У меня уже есть красивые URL-адреса, работающие везде, где они мне нужны, эта проблема конкретно для tomcat. Итак, в основном, мой вопрос остается в силе: есть ли другое приложение для перезаписи URL, которое работает в этой ситуации? - person Évelyne Lachance; 28.01.2014