【问题标题】:DNN friendly URL module is not able to rewrite the url correctlyDNN 友好 URL 模块无法正确重写 url
【发布时间】:2016-04-27 15:09:30
【问题描述】:

在 DNN 8 中,我有 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(仅适用于第二个传送门)。

【问题讨论】:

    标签: dotnetnuke


    【解决方案1】:

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

    附:确保在您的高级 url 设置中也将这些 url 添加到 to-ignore 列表中。

    【讨论】:

      【解决方案2】:

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

      select * from taburls where tabid = ##
      

      然后把网址改回原来的网址

      select * from taburls where tabid = ##
      

      看看它是否在那里添加了一条新记录。如果是这样,那么只需复制表中该“行”的格式以获取您需要创建的任何其他记录。

      你也可以看看这个codeplex project

      【讨论】:

      • @AliKhakpouri 取决于“版本”,Evoq ($$$) 确实
      猜你喜欢
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多