Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
sorbena
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 2
1

Редиректы для asp.net mvc

18.09.2013, 12:34. Просмотров 1125. Ответов 3
Метки нет (Все метки)

Здравствуйте.
Есть сайт на asp.net mvc, для него нужно сделать редирект.
Пробовала через .htaccess, но как выяснилось этот метод не работает, вычитала что редиректы делаются через web.config

Напишите, пожалуйста, как сделать постраничный 301 редирект с site.ru/page1.chtml на site.ru/page2.chtml
или как можно настроить 404 ошибку на определенную страницу?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2013, 12:34
Ответы с готовыми решениями:

ASP.NET MVC 4,ASP.NET MVC 4.5 и ASP.NET MVC 5 большая ли разница между ними?
Начал во всю осваивать технологию,теперь хочу с книжкой посидеть и вдумчиво перебрать всё то что...

Стоит ли изучать asp.net mvc 4 из за скорого выхода asn.net mvc vNext ?
Доброго вечера! Как я узнал, Microsoft скоро планирует выпустить новый веб-фреймворк с названием...

Стоит ли изучать ASP.NET MVC 4 не зная просто ASP.NET?
Стоит ли сразу изучать ASP.NET MVC не зная просто ASP.NET? И еще вопрос: мне нужно освоить MVC...

Демон для Asp.Net MVC
Здравствуйте. Необходимо запустить бесконечный цикл (24/7) который будет брать из БД записи по...

Технологии для ASP.NET MVC
Добрый вечер! Всех с праздником! Какие технологии для фронта и бэка вы используете при работе с...

3
Refactor
96 / 89 / 29
Регистрация: 05.03.2010
Сообщений: 231
18.09.2013, 14:20 2
Цитата Сообщение от sorbena Посмотреть сообщение
как можно настроить 404 ошибку
в web.config

XML
1
2
3
4
5
  <system.web>
    <customErrors mode="Off">
      <error statusCode="404" redirect="~/Errors/Error404" />
    </customErrors>
  <system.web>
вот еще про 301 редирект
0
sorbena
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 2
18.09.2013, 14:38  [ТС] 3
Если добавить
<system.web>
<customErrors mode="Off">
<error statusCode="404" redirect="~/Errors/Error404" />
</customErrors>
<system.web>

весь сайт начинает отдавать 503 ошибку. Есть стандартная страница ошибки(Error), которая отдается при не существующих страницах. В моем случае есть контроллер, но нет для него представления для него. Как на это представления настроить ошибку? Или это не возможно?
0
krainov22
4 / 4 / 1
Регистрация: 21.09.2013
Сообщений: 20
21.09.2013, 21:14 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class RewritingModule : IHttpModule
{
        #region Словарь
 
        /// <summary>
        /// Словарь с рерайтами
        /// </summary>
        private Dictionary<string, string> DictionaryRewrites = new Dictionary<string, string>()
        { 
            //откуда/куда
            { "page1", "page2" }
        };
 
        #endregion
 
 
        /// <summary>
        /// Инициализация
        /// </summary>
        /// <param name="application"></param>
        public void Init(HttpApplication application)
        {
            application.BeginRequest += ApplicationBeginRequest;
        }
 
        private void ApplicationBeginRequest(object sender, EventArgs e)
        {
            var httpContext = HttpContext.Current;
            
            //Текущий обрабатываемый урл
            var currentUrl = httpContext.Request.RawUrl;
 
            //Проходим по всем ключам в словаре
            foreach (KeyValuePair<string, string> item in DictionaryRewrites)
            {
                string itemKey = item.Key;
                //И если совпадение найдено
                if (currentUrl.Equals(itemKey, StringComparison.OrdinalIgnoreCase))
                {
                    //Перенаправляем
                    Process301Redirect(httpContext, item.Value);
                    break;
                }
            }
         }
 
        /// <summary>
        /// 301 Редирект
        /// </summary>
        /// <param name="context"></param>
        /// <param name="toRedirect"></param>
        private void Process301Redirect(HttpContext context, string toRedirect)
        {
            context.Response.AddHeader("Location", toRedirect);
            context.Response.Status = "301 Moved Permanently";
        }
 
}
В моём варианте вместо словаря я храню рерайты в таблице. И перед началом обработки, я проверяю суть запроса: может быть скачивание документа... или что-то еще, в этом случает рерайт не нужен точно (в моём случае).

Ну и теперь этот модуль в конфиг:
<modules runAllManagedModulesForAllRequests="true">
<add name="rewritingModule" type="Modules.RewritingModule, Web"/>
</modules>
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 21:14

Посоветуйте IDE для Asp.Net MVC 3
Подскажите пожалуйста альтернативу Visual Studio для asp.net mvc 3.

Материал для чтения по asp.net MVC
Подскажите толковую книгу без лишнего и на русском по asp.net MVC

Аналог MultiView и Wizard для ASP.Net MVC
В классическом ASP.Net есть элементы управления MultiView и Wizard, благодаря которым можно на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru