我有一个脚本将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/pagenamealternate
之类的其他内容,则可以正常工作。谁能告诉我是否有方便的条件或替代方法来解决这个问题?
最佳答案
由于您的模式pagename
也与目标网址(其中包含pagename
)相匹配,因此您将获得重定向循环。
将您的匹配URL更改为^pagename$
,现在重写规则仅适用于具有确切URL的请求:example.com/pagename
,您可能希望在页面名称后允许其他文本,然后使用^pagename
作为匹配模式。
正则表达式中的^
表示字符串的开头,这是有效的,因为重写引擎会查看主机名部分之后的所有内容。
还考虑重写操作而不是重定向。
关于asp.net - 重写ASP URL并获得重定向循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32261716/