DNN 友好 URL 模块无法正确重写 url

DNN friendly URL module is not able to rewrite the url correctly

在 DNN 8 中,我有 3(三)个不同的门户,它们都具有相同的 IA(页面和内容)。示例:portal1.site.com、portal2.site.com、portal3.site.com.

使用 SiteUrl.config,我想重写 URL,以便不存在的虚荣 URL 重定向到正确的页面。经过进一步调查,我意识到 siteurl.config 在相对基础上使用 URLs。它无法理解您来自哪个门户。

<RewriterRule>
    <LookFor>[^?]*/plan/speakers/.*-(.*)</LookFor>
    <SendTo>~/Default.aspx?TabId=180&amp;SpeakerId=</SendTo>
</RewriterRule>
<RewriterRule>
    <LookFor>[^?]*/plan/speakers/.*-(.*)</LookFor>
    <SendTo>~/Default.aspx?TabId=144&amp;SpeakerId=</SendTo>
</RewriterRule>
<RewriterRule>
    <LookFor>[^?]*/plan/speakers/.*-(.*)</LookFor>
    <SendTo>~/Default.aspx?TabId=264&amp;SpeakerId=</SendTo>
</RewriterRule>

如果用户想要转到 portal1.site.com/plan/speakers/mike、portal2.site.com/plan/speakers/mike 或 portal3.site.com/plan/speakers/mike,他们全部重定向到 tabid 180(仅适用于第二个门户)。

我能够实施解决方法。 1. 您想在 web.config.

中使用 IIS 重写来屏蔽新的 url
<rule name="Redirect to plan" enabled="true" stopProcessing="true">
          <match url="^plan/speakers/([_0-9a-z-]+)-([0-9]+)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
              <add input="{HTTP_HOST}" pattern="^(.*).domain.*" />
          </conditions>
          <action type="Rewrite" url="/{C:1}/{R:0}" />
        </rule>

这会将您的 url 重写为如下内容:portal1/plans、portal2/plans 等

然后,您想编辑 siteurl.config 以说明这些重写。

<RewriterRule>
      <LookFor>[^?]*/portal1/plan/speakers/.*-(.*)</LookFor>
      <SendTo>~/Default.aspx?TabId=180&amp;SpeakerId=</SendTo>
    </RewriterRule>
    <RewriterRule>
      <LookFor>[^?]*/portal2/plan/speakers/.*-(.*)</LookFor>
      <SendTo>~/Default.aspx?TabId=144&amp;SpeakerId=</SendTo>
    </RewriterRule>
    <RewriterRule>
      <LookFor>[^?]*/portal3/plan/speakers/.*-(.*)</LookFor>
      <SendTo>~/Default.aspx?TabId=264&amp;SpeakerId=</SendTo>
    </RewriterRule>

P.S。确保也将这些 url 添加到高级 url 设置中的 to-ignore 列表中。

我会通过将记录添加到每个页面的 TabURLS table 来完成此操作。如果你修改一个页面,使用页面设置,你可以修改页面的URL。试试看。查看该页面 table 中的记录。

select * from taburls where tabid = ##

然后把URL改回原来的URL

select * from taburls where tabid = ##

看看它是否在那里添加了一条新记录。如果是这样,则只需将 "row" 的格式复制到 table 中,以获取您需要创建的任何其他记录。

你也可以看看这个codeplex project