0

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 の「rewrite」オプションを使用し 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 ではなく、Search ディレクトリの 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>

.I /Search/2/VehicleDetails.aspxwant HTTP 404.(The resource cannot be found.)that client browser shows http://localhost/Search/2/VehicleDetails.aspxbut request is made on /Search/VehicleDetails.aspx..

また、次のようなURLのID(この例では2)の値を取得するにはどうすればよいですか

http://localhost/Search/2/VehicleDetails.aspxRequest.QueryString["id"]??

4

1 に答える 1

3

IIS でチェックボックスを選択するAppend QueryStringか、これを手動で追加する必要があります。例: -

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

FalseID が引き継がれていない理由であり、おそらく 404 の理由でもあるこのセットがあることに気付きました。

于 2013-06-26T08:49:11.227 に答える