У меня есть подкаст, настроенный в XML-файле, и мои текущие подписчики подписываются на него, используя прямой URL-адрес файла. (так http://website.com/feed.xml) Я читал о том, как вы можете настроить COPY этого XML-файла с помощью FeedBurner, заставить все будущие обновления делать в файле FeedBurner, а затем просто настроить перенаправление со старого URL-адреса XML на новый URL FeedBurner, чтобы отслеживать подписчиков (моя главная цель здесь).Перенаправление URL для файла в Asp.NET MVC3? (FeedBurner)
http://underscorebleach.net/jotsheet/2005/07/feedburner-rss-migration
К сожалению, все учебники, которые я видел на эту тему Предположим, у меня есть сервер Apache, и я могу изменить файл .htaccess, так что я теребя способ получить те же результаты на моем веб-сайте MVC3.
До сих пор я пытался 2 различных способа:
Добавление правила URL Rewrite в разделе "system.webServer" моего Web.config
<rewrite>
<rules>
<rule name="feedburner redirect" enabled="true" stopProcessing="true">
<match url="feed.xml" ignoreCase="true" />
<action type="Redirect" url="http://feeds.feedburner.com/NewFeed" appendQueryString="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_USER_AGENT}" pattern="FeedBurner" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>
Это не работает, и Я также получаю предупреждение в Visual Studio о том, что элемент «rewrite» не является допустимым дочерним элементом «system.webServer», поэтому я не уверен, что это правильная реализация, но я так и видел другие примеры написаны.
Другим способом, который я пробовал, является создание маршрута, который изменит ответ HTTP на перенаправление 301 на новый URL-адрес FeedBurner, если будет выполнен запрос на старый URL-адрес.
Url Routing класс:
namespace Routes
{
public class UrlRoute : RouteBase
{
public static void RerouteUrls()
{
var httpContext = HttpContext.Current;
string redirectLocation = "";
const string status = "301 Moved Permanently";
string currentUrl = httpContext.Request.Url.ToString().ToLower();
if (currentUrl.Contains("feed.xml"))
{
redirectLocation = "http://feeds.feedburner.com/NewFeed";
}
else
{
// None of the criteria was met; do not redirect user.
return;
}
// Redirect page
httpContext.Response.Clear();
httpContext.Response.RedirectLocation = redirectLocation;
httpContext.Response.StatusCode = 301;
httpContext.Response.Status = status;
httpContext.Response.End();
}
public override RouteData GetRouteData(HttpContextBase httpContext)
{
RerouteUrls();
return null;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext,
RouteValueDictionary values)
{
return null;
}
}
}
В Global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
//...
routes.Add(new Routes.UrlRoute());
//...
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
Database.SetInitializer<EF4DataContext>(null);
}
Но опять же, непосредственно введя "feed.xml" в адресной строке покажет мне старый файл XML, и URL-адрес не изменяется.
Я также видел множество предложений по настройке нового действия контроллера, которое перенаправляет на новое действие, но в этом случае это всего лишь файл, а не действие вида или веб-страницы, поэтому я не думаю который применяется здесь.
Любые рекомендации по этому вопросу были бы высоко оценены!
Просто хотите проверить, установлен ли модуль Url Rewrite правильно? Я не считаю, что это часть базовой установки IIS –