重写ASP URL并获取重定向循环

时间:2015-08-28 00:53:27

标签: asp.net redirect url-rewriting web-config

我有一个脚本,用example.com/pagename替换<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>

但是example.com/pagenamealternate技术上并不存在 - 所以如果有人导航到它,他们就会得到404.

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

[WebMethod]
public string GetKey(string parameter) 

    {
        /// Fetches data from  database 1 
        /// Fetches data from database 2
        /// Based on some calculation returns Key1

        returns key1;

    }

但它导致了重定向循环。我注意到,如果我将最终的URL更改为不同的{{1}},那么它的工作正常。

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

1 个答案:

答案 0 :(得分:1)

您正在获得重定向循环,因为您的模式pagename也匹配目标网址,其中包含pagename

将您的匹配网址更改为^pagename$,现在重写规则仅针对具有确切网址的请求启动:example.com/pagename,您可能希望在网页名称后面添加其他文字,然后使用:{{ 1}}作为匹配模式。 正则表达式中的^pagename表示字符串的开头,这是有效的,因为重写引擎会查看主机名部分之后的所有内容。

还要考虑重写操作而不是重定向。