IIS UrlRewrite не работает для IIS 8
Я только что перевел свой сайт на новый компьютер, который использует IIS 8, у меня есть IIS 7.5. Все, кроме перезаписи URL-адресов, работают хорошо. нет сообщения об ошибке, кроме "HTTP Error 404.0 - Not Found"
, которое я получил. То, что я только узнал, есть запись, такая как RewriteModule (%SystemRoot%\system32\inetsrv\rewrite.dll)
на веб-сайте > страница настроек модулей, но IIS 8 не имеет одного и того же модуля. Хотя я добавил тот же модуль в IIS 8, он не работал. Я буду рад, если у меня появится какое-то предложение о том, как решить проблему. Дополнительная информация может быть предоставлена по запросу..
Надеюсь, я мог бы выразить то, что я имею в виду правильно.
Спасибо заранее,
Alper
ps: правила URL работают хорошо.
Ответы
Ответ 1
Прежде всего, вам нужно проверить, работает ли переписывающий URL-адрес, следуйте этому образцу:
http://www.iis.net/learn/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules
Если нет, откройте IIS8 и проверьте, отображается ли значок перезаписи URL. Если не скачать msi отсюда:
http://www.iis.net/downloads/microsoft/url-rewrite
и переустановите модуль. Теперь вы можете увидеть модуль URL Rewrite в диспетчере IIS, а в корневом каталоге node (Server node), а также на узлах веб-сайта и веб-приложения.
Надеюсь, что это поможет!
Ответ 2
У меня была аналогичная проблема после обновления Windows Service 2008 до Windows Service 2012, и хотя я не полностью ее протестировал, все, что я сделал, это удалить/переустановить модуль перезаписи.
Надеюсь, это поможет любому, у кого есть такая же проблема.
Ответ 3
У меня также была эта проблема.
Как заметил OP, DLL не зарегистрирован. Установщик говорит, что все в порядке, значок перезаписи есть в диспетчере IIS, но он не работает. Проверьте DLL (см. Путь ниже). Используйте блокнот Microsoft, действительно, я НЕ шучу, это должен быть блокнот Microsoft, даже визуальная студия не будет работать для этого. Запустите блокнот как администратор и откройте C:\Windows\System32\inetsrv\Config\applicationHost.config
Добавьте следующую строку в <globalModules>
node.
<add name="RewriteModule" image="%SystemRoot%\system32\inetsrv\rewrite.dll" />
Сохраните и попробуйте свои правила сейчас.
На самом деле это должен быть блокнот, если вы попробуете отредактировать applicationHost.config в 64-битной системе с чем-нибудь еще, вы будете тянуть свои волосы в течение нескольких часов. Одна из самых странных аномалий окон, которые я когда-либо видел.
http://weblog.west-wind.com/posts/2008/Aug/09/Editing-Applicationhostconfig-on-64-bit-Win2008
http://dpotter.net/technical/2009/11/editing-applicationhostconfig-on-64-bit-windows/
Ответ 4
Для меня моя перерисовка URL-адресов работала в IIS7.5, но не в IIS8
Проблема заключалась в шаблоне
В IIS7.5 у меня был шаблон, написанный как off
В IIS8 мне пришлось обновить его до ^OFF$
Ответ 5
Это помогло проверить и исправить правила перезаписи. Я знаю, что он работал раньше, и я не знаю, как его изменить.
Ответ 6
Я забыл добавить привязки для перенаправления доменов.
Например. перенаправление на https://www.example.com обычно требует следующих привязок:
Эти правила перенаправления (from SO) затем работали на меня:
<rule name="Redirect from non www" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^example.com$" />
</conditions>
<action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
</rule>
<rule name="Redirect from non https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" pattern="^www.example.com$" />
</conditions>
<action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
</rule>
Ответ 7
Откройте диспетчер IIS > Сервеp > Модули > Настройте собственные модули
В списке выберите RewriteModule и нажмите OK
IIS Config
Это работает для меня.
Ответ 8
Вы можете попробовать этот метод. После небольшого поиска в Google вы не единственный с этой проблемой → http://forums.iis.net/t/1173537.aspx/1
Ответ 9
Я не мог найти причину проблемы, но я только что решил ее сегодня с повторной установкой Windows Server и IIS 8.
Спасибо за ваш интерес и ценное время,
Alper
Ответ 10
Также проверьте: убедитесь, что этот параметр false
, потому что иначе после перенаправления URL-адресов перезаписывается URL-адрес, приложение .NET может перенаправить его обратно.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
Ответ 11
Я потратил пару часов на решение этой проблемы. Есть шаги, в которые я прошел, и отлично переработал работу
-
Переустановите модуль перезаписи. Если вы не видите этот модуль в ISS и установленном списке приложений, но перезаписываете установщик, он говорит, что он уже установлен, перейдите в реестр (HKLM/SOFTWARE/MICROSOFT/WINDOWS/CURRENTVERSION/Uninstall) и serach 'rewrite'. Найдите строку удаления и запустите ее. Он удалит модуль перезаписи и вы сможете установить его с нуля.
-
Установите модуль ARP для IIS.
-
ВАЖНО! Если у вас уже есть web.config с правилами, удалите их. Создайте/добавьте правила через меню IIS. Таким образом, IIS активирует важный модуль ARP.