1

私は、ユーザーがその場で独自のページを作成および生成できるシステムに取り組んでいます。

これをURLRewriterに接続して、クエリ文字列を介してページ名/IDが渡される単一のページを介してページにアクセスできるようにします。私が使用できることを私が知っているので、それは簡単な部分です:

<rewrite url="/(.+)/" to="/GenericPage.aspx?PageName=$1" />

今、楽しい部分が来ます。ユーザーは、サブページやサブフォルダーを持つフォルダーを作成することもできます。これらのフォルダはnの深さにすることができ、それらの深さに制限はありません。私は主にこれを実装しました。これは、構造がトップナビゲーションを生成し、これらのフォルダーがトップレベルのメニューオプションやサブフォルダーなどになるためです。

必要なページの前に多数のフォルダーが存在する可能性があるというルールを考慮した書き換えルールを使用することはできますか?複数のルールを作成したくないのは、それが汚く見え、フォルダーの最大数があることに依存しているからです。

**What I'm trying to avoid**
<rewrite url="/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$2" />
<rewrite url="/(.+)/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$3" />
<rewrite url="/(.+)/(.+)/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$4" />
<rewrite url="/(.+)/(.+)/(.+)/(.+)/(.+)/" to="/GenericPage.aspx?PageName=$5" />
<!-- Where the additional (.+) are representative of folders -->

私はこれで困惑したようです(多分今日は少し疲れています)。

take after 2nd last /URLリライターにルールがあれば完璧でしょう。

4

2 に答える 2

0

テストする URL Rewriter のインストールはありませんが、次の正規表現が役立つ可能性があります。

.*/([^/]+?)/
于 2012-05-30T11:16:54.627 に答える
0

私はaspxを使用していませんが、可能であれば、次のようなものを使用する方がよいかもしれません

<rewrite url=".?" to="/RoutingHandler.aspx" />

これにより、正規表現による URL の書き換え (したがって、すべての潜在的なパラメーターのエスケープの問題) が回避されるためRoutingHandler.aspx、サーバー変数を介して元の要求の URL にアクセスできます。これにより、仮想ディレクトリをスラッシュで配列に分割できます。配列をパラメーター、データベース内のページ、または必要なものにマップできます。

これ.?は、すべてのリクエストの正規表現で最も迅速に一致します。静的コンテンツ要求をハイジャックしないように調整する必要がある場合があります。

于 2012-05-30T12:47:31.363 に答える