0

Piranha CMS を次の設定で使用しています。

<prefixlessPermalinks value="true" />

ただし、これにより、Permalink ヘルパーなどを使用して生成された個々の投稿の URL が壊れます。

@UI.Permalink(post.PermalinkId)

prefixlessPermalinks を False に設定すると、これは通常生成される URL になります: / home /1st-test-blog-entry

prefixlessPermalinks を True に設定すると、生成される URL は次のようになります: /1st-test-blog-entry (接頭辞がないため、「ホーム」は削除されています)

プレフィックスのない URL に従うと、次の例外が生成されます。

System.Web.HttpException: 先頭の .. を使用してトップ ディレクトリの上で終了することはできません。

この問題を回避する方法はありますか?

試行された回避策:

生成されたパーマリンクに手動で「/post」というプレフィックスを付けてから、リクエストをキャッチする次のルート マッピングを追加しました。

routes.MapRoute(
    name: "Post",
    url: "post/{permalink}",
    defaults: new { controller = "Post", action = "Index", permalink = UrlParameter.Optional },
    namespaces: new[] { "Maps.Portal.Controllers" }
).DataTokens["UseNamespaceFallback"] = false;

次のコントローラーがリクエストをキャッチします。

public ActionResult Index(string permalink)
{
    var model = GetModel(permalink);

    return View(model.GetView(), model);
}

ただし、読み取り専用の SinglePostController.CurrentPermalink プロパティが設定されていないため失敗し、Piranha CMS が例外をスローします。CurrentPermalink が CMS によって取り込まれているときに、投稿のドラフト バージョンが表示されているときに、このコントローラーが正しく起動することに注意してください。

4

2 に答える 2

1

MVC でも Web ページでもエラーを再現できません。実際、私が展開したほぼすべてのライブ インストールでプレフィックスのないパーマリンクを使用しています。MVC テンプレートを起動し、新しいデータベースをインストールし、指定したタイトル/パーマリンクを使用して投稿を追加しました。プレフィックスのないパーマリンクで問題なく表示されます。

ここに画像の説明を入力

どのようにインストールをセットアップしましたか?

よろしく

/ホーカン

于 2014-03-20T07:45:44.027 に答える