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

时间:2016-04-27 15:09:30

标签: dotnetnuke

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

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

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

如果用户想要访问portal1.site.com/plan/speakers/mike,portal2.site.com/plan/speakers/mike或portal3.site.com/plan/speakers/mike,他们都会重定向到tabid 180(仅适用于第二个门户网站)。

2 个答案:

答案 0 :(得分:0)

我能够实施一种解决方法。 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>

这将重写你的网址:portal1 / plans,portal2 / plans等。

然后,您要编辑siteurl.config以考虑这些重写。

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

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

答案 1 :(得分:0)

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

select * from taburls where tabid = ##

然后将网址更改回原始网址

select * from taburls where tabid = ##

看看它是否在那里添加了新记录。如果是这样,那么只需复制那个&#34;行&#34;的格式。在表格中,您需要创建任何其他记录。

您也可以查看此codeplex project