Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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
C# IIS重写用作重定向_C#_Asp.net_Redirect_Iis 7_Url Rewriting - Fatal编程技术网

C# IIS重写用作重定向

C# IIS重写用作重定向,c#,asp.net,redirect,iis-7,url-rewriting,C#,Asp.net,Redirect,Iis 7,Url Rewriting,我对Url重写和重定向的理解是(请指出我的错误假设) 通过对url使用“重定向”选项 http://localhost/Search/VehicleDetails.aspx?id=2来转换它 进入http://localhost/Search/2/VehicleDetails.aspx,当客户端 浏览http://localhost/Search/VehicleDetails.aspx?id=2和我们的 将规则更改重定向到 http://localhost/Search/2/VehicleDe

我对Url重写和重定向的理解是(请指出我的错误假设)

  • 通过对url使用“重定向”选项
    http://localhost/Search/VehicleDetails.aspx?id=2
    来转换它 进入
    http://localhost/Search/2/VehicleDetails.aspx
    ,当客户端 浏览
    http://localhost/Search/VehicleDetails.aspx?id=2
    和我们的 将规则更改重定向到
    http://localhost/Search/2/VehicleDetails.aspx
    ,服务器将尝试 在
    /Search/2
    文件夹中查找VehicleDetails.aspx页面

  • 但是通过对url使用“重写”选项
    http://localhost/Search/VehicleDetails.aspx?id=2
    来转换它 进入
    http://localhost/Search/2/VehicleDetails.aspx
    ,当客户端 浏览
    http://localhost/Search/VehicleDetails.aspx?id=2
    ,客户端 浏览器显示
    http://localhost/Search/2/VehicleDetails.aspx
    ,但是 服务器内部请求在VehicleDetails.aspx第页(共页)中发出 搜索目录,不在/Search/2的VehicleDetails.aspx中 目录

我的问题是,我试图按照下面的规则重写url

<rewrite>
      <rules>
        <rule name="Search" stopProcessing="true">
          <match url="^.*(?:Search/VehicleDetails.aspx).*$" />
          <conditions>
            <add input="{QUERY_STRING}" pattern="id=(\d+)" />
          </conditions>
          <action type="Rewrite" url="/Search/{C:1}/VehicleDetails.aspx" redirectType="Permanent" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>

它使用
HTTP 404重定向到
/Search/2/VehicleDetails.aspx
页面。(找不到资源)。
。我希望客户端浏览器显示
http://localhost/Search/2/VehicleDetails.aspx
但请求是在
/Search/VehicleDetails.aspx
上提出的

以及如何为url获取id值(本例中为2),如


http://localhost/Search/2/VehicleDetails.aspx
按请求。QueryString[“id”]??

您需要在IIS中选择
附加QueryString
复选框或手动添加,例如:-

<action type="Rewrite" url="/Search/{C:1}/VehicleDetails.aspx" 
redirectType="Permanent" appendQueryString="true" />


我注意到您将此设置为
False
,这就是ID未被结转的原因,可能也是404的原因。

您需要在IIS中选择
附加查询字符串
复选框或手动添加此复选框,例如:-

<action type="Rewrite" url="/Search/{C:1}/VehicleDetails.aspx" 
redirectType="Permanent" appendQueryString="true" />


我注意到您将此设置为
False
,这就是ID未被带入的原因,可能也是404的原因。

thanx用于快速响应。我还发现redirectType=“Permanent”选项对type=“Redirect”有效,并将其删除,但它不起作用:(…你还可以澄清我关于重写和重定向差异的查询..我的假设正确吗?)谢谢你的快速响应。我还发现redirectType=“Permanent”选项对type=“redirect”有效,并删除了它,但它不起作用:(…你还可以澄清我关于重写和重定向差异的查询..我的假设正确吗??