0

IIS 7.5(Win2k8 R2)では、これらの要求に対して新しいルールを作成しようとしています。

http://www.domain.com/userprofile
https://www.domain.com/userprofile
http://domain.com/userprofile
https://domain.com/userprofile

に書き換え:

http://www.domain.com/users/?username=userprofile
(or whatever the protocol/domain is)

私が書いた正規表現は次のとおりです。

^(http|https)://(www\.domain.com|domain\.com)/([a-zA-Z0-9-]{6,35})

書き直しは次のとおりです。

{R:1}://{R:2}/users/?username={R:3}

しかし、これは機能していません。プロトコルが必要ないからですか?また、リクエストがファイルまたはディレクトリではないという条件を追加しました。

また、ルールを変更するたびにIISを再起動する必要がありますか?

4

2 に答える 2

1

これらのリクエストを書き直すときに、プロトコルやドメイン名を確認する必要はありません。パスを書き直したいだけなので、あなたの場合は重要ではありません。

次のルールが機能するはずです。

<rule name="Rewrite user profiles">
    <match url="([a-zA-Z0-9-]{6,35})" />
    <action type="Rewrite" url="/users/?username={R:1}" />
</rule>

ルールを変更するときにIISを再起動する必要はありません。web.configが変更されると、IISはアプリケーションプールを自動的に再起動するため、ルールを再読み込みします。

于 2013-01-22T22:18:13.407 に答える
0

@Marcoはほぼ正しかったのですが、最終的には次のように機能しました:( IISマネージャーでURL書き換えフォームを使用しました)

正規表現:

^([a-zA-Z0-9-]{6,35})(/?)$

条件:

Not a file
Not a directory

これにより、一致はドメインの直後に開始され、最初のディレクトリであるか、末尾に「/」がない必要があります。正規表現によると、一致は6〜35文字で、英数字に「-」が付いている必要があります。

于 2013-01-23T00:23:43.130 に答える