0

IIS7で次のようにURL書き換えルールを適用しました。

パターン:^([0-9a-zA-Z-] +)/([0-9a-zA-Z -./()] +)

RewriteUrl:{R:1} .svc / {R:2}

これは、次のようにサービスを呼び出すときに完全に機能します:http:// mysite / site / myservice / input / params

私が直面している問題は、プロジェクト内のHTMLファイルへの他のすべてのリンクに.svcが追加されているように見えることです。たとえば、このコードは機能しません。

<link rel = "stylesheet" type = "text / css" href = "StyleSheet / StyleSheet.css" />

WebブラウザでURLに移動しようとすると、次のようなエラーメッセージが表示されます。

リソースが見つかりません:要求されたURL:/ site / stylesheet * .svc * /stylesheet.css

IISは、svcが存在する場合は正しく削除するようですが、存在しない場合は追加します。

何か案は??

4

1 に答える 1

0

あなたが説明しているのは、実際、書き換えルールがどのように定義されているかを考えると、正しい動作です。ルールは基本的に、パターンに一致するすべての着信URLについて、最初のグループに追加される^([0-9a-zA-Z-]+)/([0-9a-zA-Z-./()]+)ように書き換えることを示していることを忘れないでください。.svc

明らかに、それはあなたが望むものではありません。したがって、リライトが一部のURL、つまりサービス呼び出しにのみ適用されることを保証する必要があります。

.svcすべてのファイルを「サービス」などの専用のサブフォルダーに配置し、次のようにルールを変更することをお勧めします。

^services/([0-9a-zA-Z-]+)/([0-9a-zA-Z-./()]+)

そうすれば、サービスURLのみが書き換えられ、パターンと一致しなくなるため、他のすべてのURLに影響が及ぶことはありません。

于 2011-09-23T12:34:44.343 に答える