「Umbraco」には、あまりプロパティがない。
たとえば「umbracoRedirect」や「umbracoUrlAlias」などがある。とても便利!僕はそのプロパティをよく使っている。
でも!「umbracoRedirect」のリダイレクトは302。でも本当は301リダイレクトのほうがいい。302はぜんぜん SEO によくない!
だから、自分で301リダイレクトを作った!今回は Notification を使っている。
この「Umbraco」のバージョンは13。
まず、「Umbraco」で新しい Content Picker のプロパティを追加する。このれいでは、 Content Picker のエイリアスを「permanentRedirect」にしたほうがいい。
次に、RoutingRequestNotificationを作る。
using Umbraco.Extensions;
using Umbraco.Cms.Core.Events;
using Umbraco.Cms.Core.Notifications;
using Umbraco.Cms.Core.Models.PublishedContent;
namespace Starterkit.Notifications
{
public class PermanentRedirectNotification : INotificationHandler<RoutingRequestNotification>
{
private readonly IVariationContextAccessor _variationContextAccessor;
public PermanentRedirectNotification(IVariationContextAccessor variationContextAccessor)
{
_variationContextAccessor = variationContextAccessor;
}
public void Handle(RoutingRequestNotification notification)
{
var requestBuilder = notification.RequestBuilder;
_variationContextAccessor.VariationContext = new VariationContext(requestBuilder.Culture);
var content = requestBuilder.PublishedContent;
if (content == null) return;
var redirectNode = content.Value<IPublishedContent>("permanentRedirect");
if (redirectNode != null)
requestBuilder.SetRedirectPermanent(redirectNode.Url(mode: UrlMode.Absolute));
}
}
}最後に、Composer を作る。
僕は Startup.cs のファイルがあまり好きじゃない。だからよく Composer を使う!
namespace Composers
{
public class Starterkit.RedirectComposer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.AddNotificationHandler<RoutingRequestNotification, PermanentRedirectNotification>();
}
}
}終わり!
今、そのプロパティを設定したページにアクセスすると、301リダイレクトが動作する!
SEO のランキングを上げたいなら、この方法はけっこうおすすめ!

ヨハネス・ランツ
ウェブ開発者・経験8年