【问题标题】:Intelligencia URLRewriter for non existent or non aspx pagesIntelligencia URLRewriter 用于不存在或非 aspx 页面
【发布时间】:2012-09-12 10:02:41
【问题描述】:

我正在尝试将所有不存在的页面重定向到不同的域,因为我的博客已移至不同的域。

所以 www.mydomain.com/blog/asdf 应该重定向到 blog.mydomain.com/blog/asdf

使用 Intelligencia URLRewriter 模块我可以重定向博客/但如果我做博客/某事我会得到 404。

即使有一个没有像这样的正则表达式的简单规则,它也不适用于博客文件夹下的任何东西

<rewrite url="~/blog/^" to="http://blog.softwaresynergy.com/blog/" />

我也试过这个来强制所有请求都去处理程序

<modules runAllManagedModulesForAllRequests="true">

关于如何获取 blog/ 下的所有内容并重定向到其他域的任何想法?

【问题讨论】:

  • 是的,但它是一个共享托管服务,所以我不能直接在 IIS 中修改任何内容。需要全部通过网络配置。

标签: asp.net url-rewriting web-config


【解决方案1】:

尝试以下重定向规则:

<redirect url="^/blog/(.+)$" to="http://blog.softwaresynergy.com/blog/$1" />

把它放在你的其他重写规则的顶部,所以它首先被执行,我认为它应该可以工作。

【讨论】:

【解决方案2】:

URL 重写不允许重写其他域或子域上的路径。您可以在 global.asax 中使用此代码重定向 url:

void Application_BeginRequest(object sender, EventArgs e)
{
    string path = Request.Path;
    if (path.Contains("blog/"))
    {
        HttpContext.Current.Response.Redirect("http://blog.softwaresynergy.com/blog/");
    }
}

【讨论】:

  • 我对规范重定向使用相同的技术,即添加 www。但它不适用于 php 页面或文件夹。
【解决方案3】:

使用自定义 404 页面。

<system.webServer>
    <httpErrors existingResponse="Replace" errorMode="Custom">
      <remove statusCode="404"/>
      <error statusCode="404" path="/Custom404.aspx" responseMode="Redirect"  />

<customErrors mode="On">
            <error statusCode="404" redirect="/custom404.aspx" />

在 custom404 页面中,我会放置代码来进行重定向。获取导致错误的路径可能是......

Request.QueryString("aspxerrorpath");
Request.UrlReferrer;

一旦我有了他们试图访问的路径,就做一个重定向。

Response.Redirect(NEW_SITE + PATH, true);

【讨论】:

    【解决方案4】:

    我以不同的方式进行了更改。将原始站点保留为 php,并使用 php rewrite 进行重定向,效果很好。

    在域 new.mydomain 我做了 aspx 站点

    不理想,但目前可以使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多