使用IIS10 URL重写从MediaWiki URL中删除命名空间前缀

我在IIS10中托管了MediaWiki安装。我正在尝试使用URL重写模块从某些MediaWiki文章URL中删除名称空间前缀。

  • 在MediaWiki中,“主”命名空间之外的文章显示为foo.com/wiki/Namespace:Article_Title
  • 我只需要删除'Bar:'命名空间前缀,其他名称可以保持不变
  • 限制:我无法将这些文章移入Main名称空间

所需结果将显示foo.com/wiki/Bar:Article_Title中的内容,但显示为foo.com/wiki/Article_Title

现有入站URL重写

我每个Microsoft's doc for MediaWiki on IIS都有一个URL重写,它从URL中删除了查询字符串。这是基于该指导的我的重写规则:

            <rule name="Clean-WikiArticlePages" stopProcessing="false">
                <match url="^wiki/(.*)$" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="Rewrite" url="/w/index.php?title={UrlEncode:{R:1}}" />
            </rule>

到目前为止我尝试过的事情

我尝试了入站和出站规则,都没有效果。

入站规则:

            <rule name="Clean-Namespace" enabled="true">
                <match url="^wiki/(Meetings:)(.*)" />
                <action type="Rewrite" url="/wiki/{R:2}" />
            </rule>

出站规则:

        <outboundRules>
            <rule name="Remove-Namespace" preCondition="IsHTML" enabled="true">
                <match filterByTags="A" pattern="^wiki/Bar:(.*)" />
                <action type="Rewrite" value="/wiki/{R:1}" />
            </rule>
            <preConditions>
                <preCondition name="IsHTML">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules> 
x551857914h 回答:使用IIS10 URL重写从MediaWiki URL中删除命名空间前缀

如果您只想重写 Bar ,我认为有可能实现这一目标。 您希望URL显示为foo.com/wiki/Article_Title并从/ wiki / Bar:Article_Title加载内容吗?

然后,您应将所有/ wiki / Bar:Article_Title请求重定向到foo.com/wiki/Article_Title。然后将foo.com/wiki/Article_Title改写回/ wiki / Bar:Article_Title请求。

但是请记住,这仅适用于静态名称空间。因为重写的请求无法在重定向之前获取原始请求的名称空间。

不确定以下规则是否满足您的要求 当您访问

foo.com/wiki/Bar:Article_Title ------重定向-----> foo.com/wiki/Article_Title  ------- rewrite ------> foo.com/wiki/Bar:Article_Title-------rewrite---->foo.com/w/index.php?title=bar %3AArticle_Title

                <rule name="redirect" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{REQUEST_URI}" pattern="^/wiki/bar:Article_Title$" />
                    </conditions>
                    <action type="Redirect" url="wiki/Article_Title" redirectType="Temporary" />
                </rule>

                <rule name="rewrite">
                    <match url="^wiki/Article_Title$" />
                    <action type="Rewrite" url="wiki/bar:Article_Title" />
                </rule>

  <rule name="Clean-WikiArticlePages" enabled="true" stopProcessing="true">
                <match url="^wiki/(.*)$" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="Rewrite" url="/w/index.php?title={UrlEncode:{R:1}}" />
            </rule>
本文链接:https://www.f2er.com/3026621.html

大家都在问