2012-08-13 72 views
0

我正在使用IIS重寫模塊來照顧博客之間的遷移,以便在此過程中沒有任何鏈接被中斷。所以我真的只是使用了很多301重定向。IIS 7.5 URL重寫模塊重新格式化鏈接?

但是,我想避免重定向時可能的性能和搜索引擎優化的原因。我可以通過在代碼中複製我的規則來做到這一點。但我想我會先問。有沒有辦法重用重寫模塊的規則來預處理和重新格式化鏈接?

以下是從博客主題的摘錄...

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

我想改變這有點像href="ReformatLink(Post.PermaLink)",其中ReformatLink運行於指定URL的URL重寫規則,並返回新URL。

回答

1

我找到了另一種方法。我可以通過修改BlogEngine.Core來創建我想要的鏈接格式。在Post.cs中,我只需更改屬性PermaLinkRelativeLink以反映舊博客軟件的鏈接結構。

現在,我將保留我的重寫模塊規則,以防萬一我遺漏了某些東西。但這似乎照顧到了這個問題。

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/" />