Asp.net 重写ASP URL并获取重定向循环

Asp.net 重写ASP URL并获取重定向循环,asp.net,redirect,url-rewriting,web-config,Asp.net,Redirect,Url Rewriting,Web Config,我有一个脚本,它将example.com/folder/index.php/pagename替换为example.com/pagename 但是从技术上讲,example.com/pagename是不存在的,所以如果有人导航到它,他们会得到404 我试图在我的web.config文件中添加重定向,如下所示: <rewrite> <rules> <rule name="my redirect" stopProcessing="true"> <match u

我有一个脚本,它将
example.com/folder/index.php/pagename
替换为
example.com/pagename

但是从技术上讲,
example.com/pagename
是不存在的,所以如果有人导航到它,他们会得到404

我试图在我的web.config文件中添加重定向,如下所示:

<rewrite>
<rules>
<rule name="my redirect" stopProcessing="true">
<match url="pagename" />
<action type="Redirect" url="http://www.example.com/folder/index.php/pagename/" redirectType="permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>

但这会导致重定向循环。我注意到,如果我将最终URL更改为不同的内容,如
example.com/pagenamearternate
,它就可以正常工作


有人能告诉我是否有一个方便的条件或替代方法来解决这个问题吗?

您得到了一个重定向循环,因为您的模式
pagename
也匹配目标URL,其中包含
pagename

将匹配url更改为
^pagename$
,现在重写规则仅适用于具有确切url的请求:
example.com/pagename
,您可能希望允许在pagename之后添加其他文本,然后使用:
^pagename
作为匹配模式。 正则表达式中的
^
表示字符串的开头,这是因为重写引擎会查看主机名部分之后的所有内容


也考虑重写动作而不是重定向。< /P>将<代码> PGENAME> <代码> > <代码> $> ^ /代码>做了这个把戏!非常感谢!