#asp.net #asp.net-core #razor #.net-core #razor-pages
#asp.net #asp.net-core #razor #.net-core #razor-страницы
Вопрос:
Мы перемещаем большую asp.net веб-сайт на сайт .NET Core Razor pages. По всему Интернету есть ссылки, которые указывают на наш сайт, и мы хотим, чтобы эти ссылки работали после нашей миграции. Мы сохраним тот же формат URL, но без расширения .aspx.
Итак, нам нужен наш старый URL:
example.com/item.aspx обрабатывается на странице .net core razor, как
example.com/item
Комментарии:
1. Одним из вариантов является создание обработчика промежуточного программного обеспечения. Смотрите weblog.west-wind.com/posts/2018/Apr/18 /… где он обрабатывает файлы .md с URL-адресами без расширения
Ответ №1:
Вы можете использовать промежуточное программное обеспечение для перезаписи URL, чтобы удалить расширения «.aspx».
Проверьте следующий код: Используйте AddRedirect для создания правила для перезаписи URL-адресов
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
//using Regex match the .aspx extension and remove it.
var options = new RewriteOptions()
.AddRedirect(@"(w*)(.aspx)", "$1");
app.UseRewriter(options);
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
Затем скриншот, подобный этому:
Комментарии:
1. Спасибо, ZhiLv, я только добавлю, что я немного изменил регулярное выражение, чтобы разрешить более глубокие URL. like example.com/dictionary/the-item.aspx . var options = new RewriteOptions() .AddRedirect(@»(w */?[w*- ] )(.aspx)», «$ 1», 301);