我对 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
为时,服务器尝试在文件夹中找到 VehicleDetails.aspx 页面/Search/2
。但是通过对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目录的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>
它重定向到/Search/2/VehicleDetails.aspx
页面 HTTP 404.(The resource cannot be found.)
。我希望客户端浏览器显示http://localhost/Search/2/VehicleDetails.aspx
,但请求是在/Search/VehicleDetails.aspx
..
还有我如何获取 id 的值(在本例中为 2)为 url 像
http://localhost/Search/2/VehicleDetails.aspx
通过 Request.QueryString["id"]??