Mr_cool Ответов: 3

Как управлять массовыми перенаправлениями в ASP.NET


Я хочу управлять 301,404 и другими перенаправлениями. Я могу создать таблицу в базе данных sql server (которая будет содержать старый и новый url-адреса). Как вызвать их на сервере переднего плана, когда кто-то попадает на старый URL-адрес.

Решение для не-MVC предпочтительно. Должно быть быстро.

Я ценю любую помощь. Спасибо.

Что я уже пробовал:

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

3 Ответов

Рейтинг:
2

MadMyche

Существует множество способов обработки перенаправлений. Порядок, в котором они находятся, имеет большое значение в том, сколько накладных расходов создается приложением, если таковые имеются; чем меньше накладных расходов, тем большую производительность будет иметь ваш сайт.

1. на уровне сервера (web). Это было бы нормально сделано через .откройте файл. htaccess файл или внутри ASP.NET сайты могут быть через веб.конфиг файл. Преимущество этого метода заключается в том, что он практически не влияет на работу приложения, поэтому вы увидите почти нулевое влияние на производительность. Недостатком этого метода является то, что он выполняется через конфигурационный файл приложения и обычно требует перезапуска приложения.

2. В HTTP-конвейера. Это было бы через модуль (он же крюк, обработчик). Это может быть написано, чтобы перехватить каждый запрос и определить, должны ли мы позволить ему перейти на веб-сайт или нам нужно сделать что-то еще; например, перенаправить, вернуть 404 и т. д. Преимущество заключается в том, что это все еще находится на ранней стадии разработки и оказывает незначительное влияние на производительность, а также является очень мощным. Недостатком этого является то, что это самый трудный метод для эффективной реализации. Это очень мощный вариант и может привести к краху вашего сайта с помощью простой ошибки.

3. Стороны файлового сервера. Каждый файл имеет программный редирект, расположенный внутри него. Очень утомительно поддерживать. Вы также можете использовать это в контроллере MVC. Для этого требуется все приложение.

4. Побочные файл клиента. Любой html-файл имеет в <meta-тег Refresh> элемент в нем. Тот же недостаток, что и вариант на стороне сервера, и он требует, чтобы браузер действительно обрабатывал - наряду с тем фактом, что <meta refresh> может не поддерживаться или отключаться.

Как это сделать с БД. Вы можете реализовать все 4 метода, используя БД. Метод, который вы выберете для реализации вашего решения перенаправления, будет диктовать, как интегрировать БД. Если вы используете файл конфигурации/htaccess, вам нужно будет переписать блок перенаправлений на основе вашей таблицы БД.

Я лично использую метод 2, так как мне нужно было разработать iHttpHandler для целей безопасности в CMS на основе MVC. Я загружаю все редиректы в коллекцию и сканирую ее для каждого запроса. Более ранние версии обращались к БД при каждом вызове, но это создавало накладные расходы, от которых мне нужно было избавиться.


Рейтинг:
1

#realJSOP

Вы можете указать пользовательскую страницу ошибок 301 и 404 в файле web.config, а также в коде, лежащем в основе этой страницы (в PageLoad метод?), оцените ответ 404, который должен включать ошибочный url-адрес, и напишите код для перенаправления на соответствующую страницу.

Итак, если плохой url был http://www.example.com/hello111, вы можете установить строку на правильный url-адрес (http://www.example.com/hello-world).


Рейтинг:
0

#realJSOP

Использование базы данных для управления этим - ну, глупо. Google предоставит множество альтернатив, таких как эта.

Как автоматически перенаправить браузер на другую веб-страницу с одной из ваших собственных[^]


Mr_cool

Это не сработает для меня. В любом случае, спасибо. У меня есть страницы, которые не существуют, и мне нужно перенаправить их на существующую страницу.

пример: http://www.example.com/hello111 (старый url и не существует) следует перенаправить на http://www.example.com/hello-world (существует)