Что такое код asp redirect


Содержание

Как передать данные из ASP-кода в asp-страницу?

02.07.2009, 18:27

Как лучше передать данные на asp страницу?
Здравствуйте, у меня в DLL выполняется запрос, выводящий название продукта и его код. Все эти.

Как средствами ASP или ASP.NET преобразовать страницу html в PDF документ?
день добрый. попытался поискать по и-нету и релибу. но ничего вразумительного не нашёл. не.

Как передать данные полученные из asp формы в приложение Oracle
Здравствуйте. Сначала я приведу код ASP страницы. using System; using.

Можно ли в ASP или через FORM передать массив на другую страницу не используя Remote Scripting ?
Mojno li v ASP ili cherez FORM peredat’ massiv na druguyu stranitzu ne ispol’zuya Remote Scripting ?

Аналог следующего кода ASP в ASP.NET
Народ, есть какой нибудь аналог этого кода ASP в ASP.NET, (как с помощью DataSet изобразить тоже.

02.07.2009, 18:36 2 02.07.2009, 19:24 [ТС] 3 02.07.2009, 23:13 4
02.07.2009, 23:13
05.07.2009, 08:46 [ТС] 5
05.07.2009, 08:55 6
05.07.2009, 10:59 7
05.07.2009, 11:08 8
05.07.2009, 12:49 [ТС] 9

Спасибо всем за участие, отвечаю по порядку:

monstrU: У меня сама страница генерит данные, которые нужно передать в другую страницу. Поэтому поля формы она сама заполняет.
А как можно передать форму через response.redirect? Мне ведь именно это и нужно.

alex1 : В запросе, действительно не устраивает, поскольку мне хотя и надо передать всего два параметра (причем один из них я так и передаю, в самом запросе), но второй параметр — длинная строка, и не хочется ее в адресную строку засовывать — очень некрасиво получится.

pl: Session мне в голову уже приходил, и если нет другого способа, придется остановиться на этом..

ASP — Отправка содержимого в веб-обозреватель

По ходу обработки сценария на странице ASP текст и рисунки, не обрамленные ограничителями ASP или тегами отключить буферизацию для всего приложения ASP. Дополнительные сведения см. в разделе Настройка приложений ASP.

Кэширование страниц на прокси-серверах

Приложение может отправлять страницы клиенту через прокси-сервер. Прокси-сервер выступает от имени обозревателей клиентов, запрашивая для них страницы на веб-узлах. Прокси-сервер кэширует HTML-страницы, чтобы при повторении запросов к одной и той же странице быстро и эффективно возвращать искомые данные в обозреватели. Использование прокси-серверов для обработки запросов и кэширования страниц позволяет уменьшить загрузку сети и веб-сервера.

Хотя кэширование хорошо работает со многими HTML-страницами, однако при обработке страниц ASP, содержащих часто обновляемые сведения, не редки сбои. Например, страницы, отображающие цены биржевого рынка или запасы комплектующих изделий при массовом производстве, должны показывать последние сведения. Задержка даже на один час может сделать данные недостоверными. Если приложение возвращает личные данные, например специальную домашнюю страницу, может потребоваться скрытие личных сведений каждого пользователя от остальных пользователей.

По умолчанию ASP дает команду прокси-серверам не кэшировать саму страницу ASP (хотя изображения, гиперкарты, минипрограммы и другие элементы, на которые есть ссылки на данной странице, продолжают кэшироваться). Имеется возможность разрешить кэширование определенных страниц с помощью свойства Response.CacheControl, которое в заголовке HTTP задает значение поля управления кэшированием. Значением Response.CacheControl по умолчанию является строка «Private», которая запрещает кэширование данной страницы прокси-серверами. Чтобы разрешить кэширование, задайте для поля управления кэшированием в заголовке значение «Public»:

Поскольку заголовки HTTP должны быть отправлены в обозреватель или прокси-сервер раньше, чем какое-либо содержимое страницы, необходимо либо поместить свойство Response.CacheControl перед всеми тегами HTML, либо включить буферизацию данной страницы с помощью свойства Response.Buffer, если буферизация отключена.

Поле заголовка для управления кэшированием является частью спецификации HTTP 1.1. Страницы ASP не кэшируются на прокси-серверах, поддерживающих только спецификацию HTTP 1.0, поскольку поле окончания срока действия в заголовке не отправляется.

Запрет кэширования страниц обозревателями

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

Значение 0 задает для кэшированных страниц немедленное окончание срока действия. Поскольку заголовки HTTP должны быть отправлены в обозреватель или прокси-сервер раньше, чем какое-либо содержимое страницы, необходимо либо поместить свойство Response.Expires перед всеми тегами HTML, либо использовать буферизацию данной страницы.

Создание динамических каналов

Канал — это веб-технология, доступная в обозревателе Microsoft Internet Explorer версии 4.0 или более поздней, которую можно использовать для автоматической доставки нового или обновленного содержимого веб-страниц пользователям. Канал заставляет компьютер пользователя периодически подключаться к серверу и извлекать обновленные сведения. (Этот процесс сбора данных обычно называют клиентским опросом, так как сведения «опрашиваются», или собираются, на сервере.) Когда новые сведения становятся доступными на отдельном веб-узле, соответствующее содержимое загружается в кэш обозревателя для просмотра в автономном режиме. Умелое использование каналов для распространения сведений посредством веб-страниц (особенно в интрасетях) может способствовать централизации данных и уменьшению нагрузки на сервер. Дополнительные сведения о каналах можно получить на веб-узле Microsoft Internet Explorer по адресу http://www.microsoft.com/windows/ie/.

С помощью ASP нетрудно написать сценарии, позволяющие динамически создавать каналы посредством формирования файла определения каналов. Файл определения каналов создается в формате XML (.cdf) и описывает организацию и расписание обновления содержимого канала. Синтаксис команд в файле .cdf аналогичен тегам HTML, поэтому эти команды нетрудно изучить и использовать в сценариях. При написании сценария на стороне сервера, предназначенного для создания файла определения каналов, присвойте соответствующему файлу расширение .cdx. Когда ASP читает файл с расширением .cdx, автоматически отправляется тип содержимого «application/x-cdf», который говорит обозревателю о том, что байты содержимого следует воспринимать как определения каналов. Если расширение .cdx не используется, в сценарии должен быть вручную задан тип содержимого «application/x-cdf». Для этого используют свойство Response.ContentType.

Ниже представлен пример возможного использования каналов. Следующая форма HTML предлагает пользователю выбрать каналы. При оправке форма автоматически вызывает сценарий, хранящийся в файле .cdx, чтобы создать определения каналов.

Сценарий в файле Chan.cdx создает определения каналов на основе значений из формы, отправленных с помощью запроса.

Доступ к ресурсам сервера с помощью WebDAV

Протокол Distributed Authoring and Versioning (WebDAV) – это мощное расширение протокола HTTP 1.1, предоставляющее носители файлов, например файловую систему, по HTTP-соединению. WebDAV является многообещающей технологией с точки зрения превращения веб-пространства в непрерывную общую среду разработки. Используя реализацию WebDAV в IIS 5.0, можно предоставить удаленным разработчикам возможность создавать, удалять, перемещать, искать и устанавливать атрибуты файлов и каталогов на данном веб-сервере. Дополнительные сведения см. в разделе Публикация средствами WebDAV.

Response.Redirect HTTP status code

Why is it that ASP/ASP.NET Response.Redirect uses a HTTP-302 status code («Moved Temporarily») even though in most cases a HTTP-301 status code («Moved Permanently») would be more appropriate?

5 Answers 5

Responses with status 301 are supposed to be cacheable, and I don’t think you want that behavior for most ASP/ASP.NET redirects.

ASP.NET 4.0 is has the RedirectPermanent method for that if needed.

I’ve used this handy Permanent Redirect with success:

One common use case of Response.Redirect is to move the user to another page in server-side code after a postback, e.g. something along the lines of

In those cases, 301 would be completely wrong. In fact, I think that the above case (conditionally move the user to another page after some UI interaction) is a much more common use of Response.Redirect than a real this-page-moved-to-another-URL-forever scenario (where a return code of 301 would be appropriate).

In addition to the answer from Heinzi, the only entity on the web that is likely to take much notice of the 301 would be the search engines. Most browsers will not track and record 301 in order automatically redirect any subsequent request for the initial URL. Browsers treat 301 identically to how they treat 302. Hence 302 in dynamic content such as generated in ASP.NET is quite appropriate.

The error you are getting is not due to response.redirect !


The HTTP response status code 301 Moved Permanently is used for permanent redirection, meaning current links or records using the URL that the 301 Moved Permanently response is received for should be updated to the new URL provided in the Location field of the response.

Not the answer you’re looking for? Browse other questions tagged c# asp.net http redirect asp-classic or ask your own question.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.11.12.35412

Редирект на PHP, JS, ASP и др..

Редирект 301 (301 Permanent Redirect) используется в нескольких случаях: при смене домена, при переносе страницы сайта, для склейки имени сайта с www и без него. Это важно для передачи Page Rank (PR) и сохранения поискового трафика.

Сам я столкнулся с его необходимостью, когда после переезда своего портала из зоны com, в ru обнаружил, что Google, Яндекс и другие поисковые системы, естественно не «забывают» старого сайта (отчасти еще и из-за того, что у меня была некорректно установлена своя страница, для обработки 404 ошибки, которая возвращала код ответа 200 OK). Более того, Google за полгода оставил для нового сайта PR=0, хотя для старого он сохранился PR=4.

Тема 301 редиректа постоянно обсуждается в различных SEO-форумах, да и каждая поисковая система в своей системе помощи имеет специальные разделы. Пока разбирался я нашел перечисленные ниже варианты организации редиректа, часть из которых опробовал у себя.

301 редирект это наилучший метод сохранения ваших позиций в поисковых системах, когда вы переносите страницу или сайт. Код «301» интерпретируется как постоянное перемещение («moved permanently»).

Простой редирект (в файле .htaccess или httpd.conf для Apache):

Redirect 301 / http://www.you.com/new.htm

Redirect 301 — это инструкция, говорящая что страница перемещена

/ — означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано

http://www.you.com/new.htm — новая страница или сайт (не забывайте поставить последний «/», если переадресация идет на сайт).

Чтобы переадресовать только страницу, сохранив PR старой страницы:

Redirect 301 /old/old.htm http://www.you.com/new.htm

/old/old.htm — путь и имя старой страницы

Аналогичный синтаксис для переадресации сайта:

Пример переадресации каталога:

RedirectPermanent /old-directory http://www.domain.com/new-directory/

Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен):

Примечание: для моих целей (изменение домена) хватило первого варианта простого 301 редиректа.

Использование mod_rewrite (прописывается в файле .htaccess):

Ставшая классической задача слияния имена сайта с www и без него, решается так:

или альтернативный синтаксис:

Обозначение [R=301,L] означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).

Редирект старого домена на новый:

Например, если необходимо чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в .htaccess:

Для замены всех .htm файлов .html файлами:

Редирект на PHP:

Лучше указать HTTP/1.1, так как более старые не поддерживают виртуальный хостинг. Не забудьте, что до вызова header, ничего не должно выводиться (например, echo или print). Поэтому этот код лучше ставить в начало php-скрипта.

Более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова:

Редирект на ASP

Редирект на ASP.NET

Редирект на ColdFusion

Редирект с помощью meta refresh

где 0 — задержка переадресации в секундах, newdomain.com -страница, куда переадресуем. Некоторые старые браузеры не поддерживают meta refresh со значением 0, для совместимости можно установить ненулевой значение, хотя, на мой взгляд это уже не актуально. Такой редирект не сможет склеить ваши сайты (с www и без) и передать PR, так как игнорируется поисковыми системами. Он возвращает код 200 OK, что соответствует обычной странице. Эта техника популярна у спамеров, поэтому ее стоит применять только для страниц, которые не будут индексироваться.

Редирект с помощью JavaScript

Варианты переадресации на JavaScript чаще реализуются с использованием функции setTimeout(‘функция’, задержка).

Например, автоматически сделать Click на кнопке «Submit» формы «searchform» через 0.1 сек после загрузки кода:

На кнопку «Submit» можно повесить любое действие, например, открыть новый url в этом окне. Кстати такое редиректы чаще встречаются при организации Дорвеев (DorWay) — браузер Пользователя будет переадресован на другую страницу, а поисковый робот, который «не понимает» JavaScript, будет индексировать эту страницу, недоступную пользователю. На ней дорвейщики размещают текст, напичканный «нужными» ключевыми словами.

Чтобы просто переадресовать на другую страницу можно вставить после один из вариантов кода на JavaScript:

  • location=»http://www.newdomain.com»;
  • document.location.href=»http://www.newdomain.com»;
  • window.location.reload(«http://www.newdomain.com»);
  • document.location.replace(«http://www.newdomain.com»);


В последнем случае уже нельзя будет вернуться на страницу выполнившую переадресацию, так как ее адрес стирается из history, что нередко и нужною.
Если нужна задержка по времени, можно оформить location=»http://www.newdomain.com»; в виде функции и вставить ее в setTimeout(‘функция()’, задержка_в_мсек);
Редирект на JavaScrupt не является 301 редиректом и не передаст PR страницы, не сможет обеспечить ее склейку.

Отметим дополнительно некоторые особенности редиректов:

  • Методы редиректа с .htaccess работают только на Linux серверах, имеющих Apache с включенным модулем Mod-Rewrite.
  • Использование .htaccess создает дополнительную нагрузку на сервер Apache, более эффективно прописывать те же команды в его конфигурационном файле hpptd.conf, но, как правило, к нему нет доступа у вебмастера.
  • 301 редирект, позволяет сберечь трафик и передать PR страницы для поисковых систем (для Google точно).
  • процесс склейки и передачи PR занимает длительное времени — до нескольких месяцев и также зависит от поисковой системы, поэтому не удаляйте старую страницу или сайт, пока не произойдет окончательный перенос.
  • некоторые поисковые системы требуют для склейки сайтов дополнительных настроек, например, для Яндекса нужно дополнительно прописывать robots.txt

Заключение. Безопасный способ редиректа старых страниц на новые или старого сайта на новый адрес, с сохранением позиций в поисковых системах, заключается в использование 301 редиректа, который также позволит вам передать старый Page Rank страницы на новый сайт.

Более подробно про mod_rewrite можно прочитать на:

Проверить корректность редиректа и других возвращаемых заголовков, можно, например, здесь:

Response.Redirect — Как написать код HTML/aspx для response.redirect

0 usergaro [2012-01-13 00:53:00]

Как response.redirect на страницу aspx, которая создается на лету. Пример:

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

redirect asp.net response

3 ответа

1 n8wrl [2012-01-13 01:03:00]

Вы не можете перенаправлять на подобный диматический контент. Но, возможно, у вас может быть контент загрузки страницы через AJAX. Проверьте jQuery и его возможности AJAX, чтобы динамически загружать контент в элементы.

0 Tim [2012-01-13 01:08:00]

Response.Redirect нужно вызывать до того, как какой-либо HTML будет отправлен в браузер.

Я думаю, что вы пытаетесь сделать это Response.Write вне HTML на основе того, что происходит в вашей обработке. Вы уверены, что вам не нужна физическая страница или страницы?

0 TimDog [2012-01-13 01:07:00]

Вы думали об использовании httpHandler для этого?

В вашем web.config зарегистрируйте обработчик:

Вы можете поставить любую логику, которую вы сейчас используете для построения aspx в вашем обработчике:

301 redirect ASP.NET?

Есть 1 сайт, к нему можно обратиться по 3 доменам.

Это все один и тот же сайт.

Необходимо правило для asp.net, которое с site3.com & site2.com отдавало 301 редирект на www.site1.com

  • Вопрос задан более трёх лет назад
  • 7647 просмотров

Содержимое web.config — реально работающий пример (названия сайтов изменены на фейковые), который:
1) при переходе на www.company.ru перенаправляет на company.ru
2) при переходе на mysite.com перенаправляет на company.ru
3) при переходе на www.mysite.com перенаправляет на company.ru
4) сохраняется ссылочная целостность, т.е. при переходе по www.mysite.com/home/write_to_us перенаправляет на company.ru/home/write_to_us

Если не работает, значит, что-то с модулем URL Rewrite Module в IIS.

На сайте mysite.com (с которого будет редирект) в web.config пишем:

На сайте company.ru (на который будет редирект) в web.config пишем:

Возможно, сама Visual Studio будет у Вас ругаться на наличие секции «rewrite» — у меня она эту секцию подчеркивала. В чем причина — я, честно говоря, не помню, но на самом сайте уже все работает на ура.

Все о 301 редиректе с примерами

301 Редирект — это способ постоянного перенаправления поисковых систем и посетителей сайта на адрес, который отличается от изначально запрашиваемого. Такой ответ сервера указывает на то, что старый url утратил актуальность, страницу переместили. После переиндексации Яндекс и Google поймут куда вы теперь хотите вести посетителей и станут предлагать пользователям новый адрес.

Удивительно, но факт: с помощью редиректа можно превратить потерю в победу и привлечь на свой ресурс еще больше трафика. Но об этом чуть позже.

Если вы хотите сделать правильную настройку 301 редиректа, обязательно изучите наше пошаговое руководство с примерами кода на все случаи и различными лайфхаками.

Для чего используется 301 редирект?

Код 301 — эффективный, простой в реализации вариант переадресации web-страницы. Это удобный способ сохранения рейтинга конкретной страницы сайта.

Основные причины, чтобы добавлять 301 редирект:

  • сохранение «накопленных пользовательских сигналов» контента
  • с передачей ссылочного веса новой странице;
  • перенаправление трафика из других адресов на нужный;
  • в случае ребрендинга и смены домена, чтобы не потерять клиентов;
  • перемещение страниц;
  • склейка (с www и без, http и https);
  • удаление дублей страниц.

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

Редирект можно назвать своеобразной палочкой-выручалочкой. В случае переезда всего сайта или отдельных страниц он сохранит все плоды проделанной работы: авторитет доменного имени и ранжирование в поиске. Главное — использовать перенаправление по назначению.


Сегодня вы получите 22 конкретных примера установки кода 301 и пять важных рекомендаций. С последних и начнем!

Советы по перенаправлению

Важно! Ошибки в настройках редиректов уменьшают эффект их использования.

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

Пример последовательных редиректов:

Пример последовательных редиректов

Правильным в данном примере должен быть редирект с 1 шага на 3й.

2. Размещайте правила редиректов от частных правил к общим так как противоречия частных общим могут вызывать их не срабатывание. Если частные будут ниже общих, в случае противоречий правил будут срабатывать общие как те, что идут первее по списку.

3. Из-за того что браузеры обычно запоминают перенаправления, лучше проверять код состояния HTTP через специальный сервис.

4. Переадресация не должна быть циклической, то есть странице нельзя ссылаться на саму себя.

Пример циклического редиректа: со страницы без слеша в конце URL стоит 301 редирект на страницу со слешем, на которой стоит 302 редирект обратно:

Пример циклического редиректа

5. Полезный редирект — тот, что ведет на страницу, которая во всех нюансах повторяет запрашиваемую.

Популярные виды редиректов

Желаете узнать, как сделать переадресацию? Сначала надо ознакомиться с названиями и особенностями самых используемых статусов.

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

Представляет собой временный редирект. Не склеивает накопленные внутренние метрики страницы.

Статус ответа сервера зависит от версии протокола HTTP:

  • HTTP 1.0 — текущая публикация временно перемещена на другой url (Moved Temporarily);
  • HTTP 1.1 — документ не найден (изменения ответа на Found).

307 Moved Temporarily подходит лишь для исключительных случаев — действительно кратковременного переезда контента, например, при техническом обслуживании.

Meta Refresh

Обновления Meta являются переадресациями, которые осуществляются не на уровне сервера, а на самой странице. Чаще всего такой код ответа связан с пятисекундным обратным отчетом, дополненным текстом «Если переход не произошел за пять секунд, нажмите здесь».

Этот медленный статус относится к не рекомендованным SEO-техникам — он может привести к ухудшению поведенческих факторов и проседанию веб-страницы в органической выдаче.

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

В чем разница между постоянной и другими переадресациями?

302 и 301 редирект похожи между собой. Тем не менее для большинства случаев оптимальным решением станет именно постоянная переадресация.

Эти коды ответа HTTP не одинаково воспринимаются роботами и, соответственно, по-разному влияют на поисковую выдачу. Редирект 301 — знак того, что поисковику стоит забыть о старом адресе и больше никогда на него не заходить. А 302 дает сигнал о продолжении индексирования контента, размещенного на изначально запрашиваемой странице.
В случае 301 перенаправления утратившая актуальность публикация перестанет отображаться в поисковой выдаче. При 302 редиректе в индексе будут присутствовать обе страницы.

По сути, лучше всегда ставить код 301.

Временное перенаправление рекомендовано лишь в исключительных случаях, когда:

  • на запрашиваемой странице есть ссылки, которые обязаны и дальше индексироваться;
  • индексация новой страницы не является критичной.

Опыт из практики: 301 редирект против 302

Статус 302 — временная мера, сообщающая поисковикам о том, что на старой странице проходят технические работы и ее надо сохранить в выдаче.

Рассмотрим на примере. Сайт изменил доменную зону, а затем еще и обзавелся защищенным протоколом https. Однако разработчики настроили не постоянное, а временное перенаправление.

Во время работы 302 редиректа в индексе Яндекса и Google находилось 3 копии одной и той же интернет-площадки. Из-за этого произошло существенное проседание позиций.

Пример ошибки работы 302 редиректа

Когда ошибка была исправлена, роботы склеили дубли, исключив лишние страницы из своей выдачи. Сайт снова вернулся в ТОП.

301 редирект vs Canonical

Несмотря на определенные нюансы, поисковые системы установили четкие правила использования команд. Вот как их понимают Гугл и Яндекс:

  • 301 — «Моя страница навсегда переехала в другое место, она не вернется. Удалите, пожалуйста, ее из своего индекса и передайте вес новому документу».
  • Canonical — «У меня имеется несколько версий содержания страницы. Просканируйте, пожалуйста, приоритетную для меня копию, которую я пометил canonical. Остальные материалы тоже будут доступны пользователям, но индексировать их не нужно».

Когда лучше применить 301 редирект:

  • это лучший метод по умолчанию;
  • для ошибки 404 и контента, утратившего актуальность, но имеющего
  • внешние ссылки и много трафика;
  • при смене домена в результате ребрендинга или продажи ресурса;

  • для страницы, которая переехала навсегда.

Случаи использования rel=«canonical»:

  • если статья имеет нужные посетителям дубли, например, описания
  • одной и той же продукции, но разного цвета;
  • когда постоянное перенаправление реализовать трудно;
  • для кросс-доменов с похожими статьями;
  • при разных адресах одного контента (сортировка каталога).

Где настраивается 301 редирект?

В зависимости от движка, переадресацию можно выполнить разными способами.

.htaccess, или httpd.conf для Apache

Это популярный благодаря своей простоте метод, для осуществления которого надо создать файл под названием .htaccess в папке сайта. Или отредактировать, если он уже предусмотрен движком.

Важно! Перед любыми изменениями сделайте Backup редактируемого файла (или всего сайта)

Для постоянного перенаправления пропишите в начало файла, подставив свои данные:

  • Редирект всего сайта на другой адрес:

В ASP.NET MVC, как работает response.redirect?

asp.net-mvc (4)

Я использовал response.redirect в классических ASP и ASP.NET веб-формах. Однако с MVC 2.0 я сталкиваюсь с чем-то особенным.

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

Большая проблема, которую я замечаю, заключается в том, что класс вызывающего контроллера и просмотр страницы пытаются завершить рендеринг и загрузку, прежде чем перенаправление действительно состоится. Это раздражает развитие, потому что в представлении View выделяются исключения, которые мне нужно игнорировать, прежде чем загрузится моя общая страница с ошибкой.

Как уже упоминалось выше, я привык к более старой модели response.redirect, которая предотвращает выполнение последующего кода на странице, поскольку новая страница будет загружаться.

Любая помощь или совет по переадресации в MVC будет с благодарностью.

попробуйте этот код в mvc view page lode

его рекомендуется и его единственный способ перенаправить на форму asp.net в mvc-контроллере, используя

другим способом мы можем перенаправить, используя (не рекомендуется и плохо)

он будет работать для перенаправления, но проблема в том, что он очистит все наши значения сеанса. так почему это не рекомендуется.

Редирект с http на https для Linux

Редирект на Linux-хостинге

Чтобы ваш сайт работал по безопасному протоколу HTTPS, после установки SSL-сертификата нужно настроить перенаправление (редирект) с HTTP на HTTPS в панели управления.

Для этого ваш сайт должен быть размещен на хостинге REG.RU.

Обращаем внимание, что редирект стоит настраивать только в том случае, если в панели управления уже установлен SSL-сертификат: Как установить SSL-сертификат на хостинг?

Как настроить редирект?

Если у вас на хостинге панель управления ISPmanager 5, переадресацию можно настроить в несколько кликов средствами панели управления.

Если у вас на хостинге панель управления — cPanel или Parallels Plesk, редирект настраивается только через конфигурационный файл .htaccess

Настройка редиректа в ISPmanager 5

Откройте панель управления ISPmanager5 и перейдите в раздел «WWW-домены». Выберите домен, который должен открываться по HTTPS и нажмите Изменить. Поставьте галочку напротив пункта Перенаправлять HTTP-запросы в HTTPS и нажмите ОК, чтобы сохранить изменения.

Готово. Теперь ваш сайт будет работать по протоколу HTTPS.

Настройка редиректа в cPanel и Plesk

Откройте файл .htaccess. Он расположен в корневой папке сайта. Если файл .htaccess отсутствует, то причина может быть в том, что в cPanel не отображаются скрытые файлы. Чтобы отобразить скрытые файлы, воспользуйтесь инструкцией.

Как открыть файл .htacсess

В разделе «Домены» выберите пункт Дополнительные домены. Нажмите по строке, где указана корневая папка домена. Затем нажмите правой кнопкой по файлу .htaccess и выберите в появившемся списке пункт Edit:

Под нужным доменом нажмите по строке, где указана корневая папка домена. Откроется корневая папка вашего сайта. Найдите в списке файл .htaccess и кликните по нему левой кнопкой мыши:

Добавьте в конце файла .htaccess одно из правил, которое подходит для вашего случая:

Редирект всех страниц с http:// на https://, в том числе и с http://www на https://

или воспользуйтесь вторым вариантом (если первый вариант не поможет):

если все варианты не помогли и возникает циклическая переадресация, добавьте:

Редиректы с папок Home/Index на корневую в приложениях MVC на ASP.NET Framework

Сайты, разработанные на паттерне MVC в ASP.NET Framework имеют особенность отдавать одинаковое содержимое с HTTP-кодом 200 по разным url, если вызывается действие по-умолчанию контроллера (Index) или сам контроллер по-умолчанию (home). Например, действие Index контроллера HomeController сработает и сформирует одинаковую страницу представления Index.cshtml при обращении сразу как минимум, по трём url-адресам: example.com, example.com/Home и example.com/Home/Index. Index контроллера AboutController — по двум: example.com/About и example.com/About/Index. Это очень плохо в плане поисковой оптимизации, т.к. создаются страницы-дубли, и нужно чтобы либо страница отвечала двухсотым кодом только по одному адресу, а с остальных либо отдавала http ошибку 404 (ресурс не найден), либо 301 (ресурс перемещён навсегда). Выберем второй вариант и будем перенаправлять 301-м редиректом со страниц Index или Home на корневую папку. Существует несколько методов, но во-первых следует перевести все url в нижний регистр, чтобы Index в адресной строке превратился в index.

1. Использование дополнительного параметра в таблице маршрутизации.

Переопределим метод RegisterRoutes класса RouteConfig следующим образом:

Тут мы указываем, что если url заканчивается на Index или Home, то в контроллер также передаётся параметр NeedRedirectFromIndex. Далее, контроллер должен проверить этот параметр и в случае его наличия вызвать переадресацию на самого себя с пустым параметром. Для этого перепишем метод Index контроллера:

Теперь при обращении к папке home/index будет перенаправление в корневую папку сайта. У этого подхода, как минимум, 2 недостатка. Во-первых, нужно так или иначе модифицировать все методы Index всех контроллеров, для которых мы желаем производить перенаправление. Во-вторых, при построении ссылок, например, с помощью выражения ActionLink нужно добавлять пустое значение RedirectToActionPermanent в качестве параметра:

Иначе адреса будут формироваться в виде controller/index, а с них уже будет происходить перенаправление, что тоже не есть хорошо не только для поисковой оптимизации, но и для нагрузки на сервер

2. Переадресация в методе Application_BeginRequest класса MvcApplication

Оставляем маршруты и контроллеры в изначальном виде (по умолчанию) и опишем метод Application_BeginRequest класса MvcApplication примерно следующим образом (файл global.asax):

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

в случае, если в качестве id будет передано значение «Index» или «home», то сработает перадресация и параметр никогда не будет передан в контроллер. Понятно, что в параметре Id таких значений, скорее всего, передано не будет, но если в качестве параметра выступает строковое значение (например ЧПУ-url вида ///) — то вполне вероятно. В качестве крайнего решения можно предопределить имя метода действия по-умолчанию на какое-нибудь уникальное название (комбинацию символов), которое никогда не будет передано в качестве параметра. Либо доработать условия переадресации метода Application_BeginRequest на соблюдение уровней вложенностей адресов и, возможно, наложения дополнительных условий проверки url-ов в случае сложной адресации, когда в зависимости от условия вхождения строки в url уровень вложенности может быть различным.

3. Редирект с помощью URL Rewrite

Чтобы переадресовать с папки Home сайта в папку home/index, нужно в файле Web.config в секции — — — добавить правило:

Аналогично можно сделать и другие переадресации, если есть возможность правильно написать регулярные выражения и условия.

Илон Маск рекомендует:  Что такое код asp processform
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL