使用IIS10 URL重写从MediaWiki URL中删除命名空间前缀
我在IIS10中安装了MediaWiki。我试图使用URL重写模块从一些MediaWiki文章URL中删除名称空间前缀使用IIS10 URL重写从MediaWiki URL中删除命名空间前缀,iis,url-rewriting,mediawiki,Iis,Url Rewriting,Mediawiki,我在IIS10中安装了MediaWiki。我试图使用URL重写模块从一些MediaWiki文章URL中删除名称空间前缀 在MediaWiki中,“主”命名空间之外的文章显示为foo.com/wiki/namespace:Article\u Title 我只需要删除“Bar:”名称空间前缀,其他名称空间前缀可以保持不变 限制:我无法将这些项目移动到主命名空间中 预期结果将显示foo.com/wiki/Bar:Article\u Title中的内容,但显示为foo.com/wiki/Articl
- 在MediaWiki中,“主”命名空间之外的文章显示为
foo.com/wiki/namespace:Article\u Title
- 我只需要删除“Bar:”名称空间前缀,其他名称空间前缀可以保持不变
- 限制:我无法将这些项目移动到主命名空间中
foo.com/wiki/Bar:Article\u Title
中的内容,但显示为foo.com/wiki/Article\u Title
重写现有入站URL
我已经有了一个URL重写,per,它从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>
出站规则:
<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>
我认为,如果您只想为栏重写,就有可能实现这一点。 要将URL显示为foo.com/wiki/Article\u Title并从/wiki/Bar:Article\u Title加载内容吗 然后您应该将所有/wiki/Bar:Article\u Title请求重定向到foo.com/wiki/Article\u Title。然后将foo.com/wiki/Article\u Title重写回/wiki/Bar:Article\u Title请求 但请记住,这只适用于静态名称空间。因为重写的请求在重定向之前无法获取原始请求的命名空间 不确定以下规则是否符合您的要求 当您访问 foo.com/wiki/Bar:Article\u Title------重定向------->foo.com/wiki/Article\u Title -------重写---->foo.com/wiki/Bar:Article\u Title-----重写---->foo.com/w/index.php?Title=Bar%3AArticle\u 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>