Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net Url重写Url具有太多重定向_Asp.net_Url_Redirect_Url Rewriting - Fatal编程技术网

ASP.Net Url重写Url具有太多重定向

ASP.Net Url重写Url具有太多重定向,asp.net,url,redirect,url-rewriting,Asp.net,Url,Redirect,Url Rewriting,我有一个网站,文件夹中有.aspx文件,页面的当前路径类似于/giveway/giveway.aspx。我添加了一个url重写规则,当用户进入somedomain.com/giveway时,自动将用户定向到所述页面,但是我得到了一个错误 `This page isn’t working `somedomain.com redirected you too many times.` 有人能告诉我我做错了什么吗?以下是我的规则 <rewrite> <rules>

我有一个网站,文件夹中有.aspx文件,页面的当前路径类似于/giveway/giveway.aspx。我添加了一个url重写规则,当用户进入somedomain.com/giveway时,自动将用户定向到所述页面,但是我得到了一个错误

 `This page isn’t working 
 `somedomain.com redirected you too many times.`
有人能告诉我我做错了什么吗?以下是我的规则

<rewrite>
  <rules>
    <rule name="Redirect to HTTPS">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
    </rule>
    <rule name="Giveaway" stopProcessing="true">  
        <match url="^giveaway*" />  
        <action type="Rewrite" url="/giveaway" appendQueryString="false" />  
      </rule>  
     <rule name="GiveawayRedirect" stopProcessing="true"> 
       <match url="^giveaway*" /> 
       <action type="Redirect" url="/Giveaway/giveaway.aspx" appendQueryString="false" redirectType="Permanent" /> 
     </rule> 
  </rules>
  <outboundRules>
    <rule name="Add SameSite" preCondition="No SameSite">
      <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
      <action type="Rewrite" value="{R:0}; SameSite=strict" />
      <conditions>
      </conditions>
    </rule>
    <preConditions>
      <preCondition name="No SameSite">
        <add input="{RESPONSE_Set_Cookie}" pattern="." />
        <add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=strict" negate="true" />
      </preCondition>
    </preConditions>
  </outboundRules>
</rewrite>

因为我的路径是/giveaway/giveaway,所以它是循环的,因为它用于多次查找关键字。我将路径更改为/contest/giveway,现在当用户键入“/giveway”时,它会重定向到/contest/giveway并正常工作

这是我的规则

<rule name="GiveawayRedirect" stopProcessing="true">
           <match url="^giveaway*" />
           <action type="Redirect" url="/contest/giveaway" appendQueryString="false" redirectType="Permanent" />
         </rule>


这个
^giveaway
的基本意思是
/giveaway
。因此,您将在循环中发送重定向,因为您将重定向发送到
url=“/giveway”
,而规则
GiveawayRedirect
将永远无法到达,因为该规则与上面的规则相同。因此,我只需要最上面的规则?不,最上面的规则是在循环中发送重定向的规则。你可能只需要底部的那个。(正如你所发现的)