0

我正在使用 IIS 重写模块来处理博客之间的迁移,以便在此过程中不会破坏任何链接。所以我真的只是使用了很多 301 重定向。

但是,出于性能和搜索引擎优化的原因,我想尽可能避免重定向。我可以通过在代码中复制我的规则来做到这一点。但我想我会先问。有没有办法重用重写模块的规则来预处理和重新格式化链接?

以下是博客主题的摘录...

<a rel="bookmark" href="<%=Post.PermaLink %>" title="<%=Server.HtmlEncode(Post.Title) %>">Permalink</a>

我想将其更改为类似href="ReformatLink(Post.PermaLink)",在ReformatLink指定 URL 上运行 url 重写规则并返回新 URL。

4

2 回答 2

1

我找到了另一种方法。我可以通过修改 BlogEngine.Core 来精确创建我想要的链接格式。在 Post.cs 中,我只是更改了属性PermaLinkRelativeLink反映旧博客软件的链接结构。

我暂时保留我的重写模块规则,以防我遗漏了什么。但这似乎解决了这个问题。

于 2012-08-13T18:40:58.057 回答
0

我正在使用这个库http://www.iis.net/download/urlrewrite我正在做类似下面的事情。

    <rule name="FolderAndNoQueryString" stopProcessing="true">
      <match url="^([^/]+)/([^/]+)/?$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <!--  The following condition prevents rule from rewriting requests to .axd files -->
        <add input="{URL}" negate="true" pattern="\.axd$" />
      </conditions>
      <action type="Rewrite" url="{R:1}/{R:2}.aspx" />
    </rule>

在我的 HTML 代码中,我有以下内容;

<a href="<%=AppSettings("ApplicationPath") %>Folder/MyActualASPXPage">My Link</a>

ApplicationPath 只是一个普通的 Web.Config Key 如下所示;

<add key="ApplicationPath" value="/MyVirtualDir/" />
于 2012-08-13T18:49:33.583 回答