我的网站有点奇怪。
我们在IIS 6.0上使用helicon isapi rewrite,实际的网址重写工作正常。但是...当我尝试通过 asp.net LoginStatus 控件登录时,它会使用“returnURL”查询字符串参数重定向到 login.aspx 页面:
/account/login.aspx?ReturnUrl=%2fwindfarms%2fbarrow-united-kingdom-uk01.html
但是由于某些奇怪的原因,它将原始未重写的查询字符串参数添加到它的 returnURL 参数中,如下所示:
/account/login.aspx?ReturnUrl=%2fwindfarms%2fbarrow-united-kingdom-uk01.html %3fwindfarmID%3duk01
为了澄清,在“.htaccess”文件中,我们有:
RewriteRule [\w\W\s\S-]*-(\w\w\d[\d\w]+)\.html windfarms.aspx?windfarmID=$1 [QSA]
我们重写的网址看起来像:
barrow-united-kingdom-uk01.html
但是,当单击 asp.net LoginStatus 控件时,它看起来像:
/account/login.aspx?ReturnUrl=%2fwindfarms%2fbarrow-united-kingdom-uk01.html%3fwindfarmID%3duk01
成功登录后最终看起来像这样:
/barrow-united-kingdom-uk01.html?windfarmID=uk01
为什么会发生这种情况,我该如何防止这种情况发生?
谢谢大家
更新
我发现实际的表单操作方法在点击 asp.net LoginStatus 控件之前已经改变,所以在按下“登录”按钮之前 html 看起来像这样:
<form name="aspnetForm" method="post" action="barrow-united-kingdom-uk01.html?windfarmID=uk01" id="aspnetForm">