URL Перепишите из /default.aspx в/

Я использую инструмент URL Rewriting.NET с IIS 6. У меня есть контент по умолчанию, установленный для default.aspx в IIS. То, что я пытаюсь сделать, это /default.aspx предоставить 301 переадресацию в корневой каталог (www.example.com/default.aspx → www.example.com). Я попытался отключить документы по умолчанию, но безрезультатно.

То, что я надеюсь сделать, это использовать пару правил URL Rewriting.NET для достижения этой цели. Любые мысли?

EDIT:

Извините, я забыл прояснить. Если я перенаправляюсь из /default.aspx в/с включенными документами по умолчанию (я хотел бы оставить их включенными), тогда я получаю бесконечный цикл по умолчанию → /- > default

Ответы

Ответ 1

В итоге я завершил работу с IIS 7 с помощью модуля URL Rewrite, который позволяет вам правильно перенаправить.

Изменить:

Правило

<rule name="Default Redirect" stopProcessing="true">
    <match url="^default\.aspx$" />
    <action type="Redirect" url="/" redirectType="Permanent" />
</rule>

вы можете сделать это с помощью отдельного правила для каждой папки, или вы можете использовать

<rule name="All Redirect">
    <match url="^(.*\/)*default\.aspx$" />
    <action type="Rewrite" url="{R:1}" />
</rule>

Ответ 2

Я столкнулся с этой проблемой еще некоторое время, пытаясь понять, почему некоторые установки IIS будут работать с перенаправлением /default.aspx, а некоторые вырождаются в конечный цикл.

Я нашел ответ, был ли app.net "подстановочным", отображаемым для запуска всех запросов в IIS.

Проще говоря, если у вас есть готовая установка IIS, она всегда добавит документ по умолчанию к любому запросу для корня сайта. Таким образом example.com становится example.com/default.aspx, когда вы проверяете Request.Url в ASP.NET. Поэтому, если вы обнаруживаете эту ситуацию и пытаетесь перенаправить ее обратно на example.com, IIS делает это, добавляет /default.aspx, и ваш код попадает в цикл его собственного создания.

Исключением является установление подстановочного сопоставления, чтобы все запросы обрабатывались через конвейер asp.net. В этом случае IIS больше не добавляет документ по умолчанию для каждого запроса на уровне Request.Url. И таким образом вы можете сделать перенаправление.

Я разместил все это в этом сообщении в блоге: 301 Перенаправление из /default.aspx в корень сайта - последнее слово - но это было написано несколько лет назад, и изменения в IIS7, возможно, устранили проблему, как показывает принятый в настоящее время ответ.

Но если вы боретесь с этой проблемой, то поиск состояния подстановочного знака - это правильное место для запуска.

Ответ 3

У меня была та же проблема. Для тех, кто задается вопросом, почему кто-то захочет это сделать, это вопрос SEO. Если Google индексирует вашу домашнюю страницу с и без default.aspx в конце, популярность PageRank и ссылок будет разделяться между двумя URL-адресами. Теперь, если вы столкнулись с этой проблемой, и вы можете консолидировать два URL-адреса, вы можете получить повышение рейтинга поиска. Еще одна вещь, о которой нужно помнить, заключается в том, что если вы столкнулись с этой проблемой, вы ДОЛЖНЫ использовать 301 переадресацию для Google, чтобы консолидировать свой индекс между двумя URL-адресами. В противном случае ваши усилия будут бесполезны.

Это слишком поздно, так как вы уже решили это, обновив IIS7. Но я просто добавлю, что единственным решением этой проблемы, которую я придумал для IIS6, является добавление фильтра ISAPI.

Я зарегистрировал полное решение здесь... http://swortham.blogspot.com/2008/12/redirecting-default-page-defaultaspx-to.html

Ответ 4

Если вы правильно поняли, вы не хотите отображать "default.aspx", когда кто-то входит в папку с этим документом.

Итак, если они ударяют его, вы хотите автоматически перенаправить на '/' и просто загрузить документ по умолчанию?

Если это случай, то, как указано выше, вы рискуете бесконечным циклом. Второй комментарий дает вам ответ, но я предполагаю, что для механизма повторной записи вам понадобится следующее:

Отключить документы по умолчанию Зарегистрируйте каждую папку с помощью механизма перезаписи Когда эта папка запрашивается, загрузите файл default.aspx в соответствии с вашим целевым правилом.

Звучит ли это правильно?

Я должен спросить, почему вы хотите это сделать?

Ответ 5

Я не уверен, что понимаю, в чем проблема.

Хотя, если вы отключите документы по умолчанию, то/просто укажет на каталог, а не на страницу default.aspx.

Оставьте учетные записи по умолчанию и просто выполните перенаправление на основе того, находится ли default.aspx в запрошенном URL-адресе или нет.

Ответ 6

хорошо, вы можете использовать регулярный .net для проверки URL-адреса httprequest, если в нем есть "default.aspx", вы можете перенаправить на "/", не будет бесконечного цикла, и вам лучше сделать это при предварительной загрузке и завершить ответ после этого, чтобы свести к минимуму время, затрачиваемое на обработку