我有一个多服务器的IIS服务器。我有seo友好URLS的基本重写规则。
示例:
www.something.com/here-is-the-page
当前转换为
www.something.com/index.htm?pagetitle=here-is-the-page
问题是,一个域需要此规则才能允许URL在末尾以.htm读取。
示例:
www.something.com/here-is-the-page.htm
需要转换为
www.something.com/index.htm?pagetitle=here-is-the-page
(注意,刚删除了.htm,虽然我仍然希望.htm显示在位置栏中)...
答案 0 :(得分:0)
感谢所有人的帮助......下面的[讽刺]是解决方案。 这里的关键是MatchAll。
查看网址
检查这是否适用于www.something.com
检查以确保没有带有filename.htm
的实际文件检查没有该名称的目录
如果文件是sitemap.htm(确实存在,则不进行处理)这应该通过先前的文件检查来捕获,但只是添加了过度杀伤。由于这是重写而不是重定向,因此.htm将继续显示在导航栏中。
<rule name="remove the htm" stopProcessing="true">
<match url="([_0-9a-z-]+)\.htm$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www.something.com)$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="sitemap\.htm$" negate="true" />
</conditions>
<action type="Rewrite" url="/index.cfm?pagetitle={R:1}" />
</rule>