Estableciendo dinámicamente la ruta de origen de SPA en .Net Core 3.1
Tengo una aplicación .Net Core 3.1 que utilizo como API, pero también como mi SPA (Angular). Recientemente he tenido algunos problemas con el SEO y me gustaría servir una versión estática de mi aplicación Angular cuando Googlebot esté alrededor.
¿Existe alguna forma de establecer dinámicamente la ruta de origen del SPA?
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
});
Actualmente tengo un pequeño archivo de middleware donde detecto Googlebot basándome en la cadena UserAgent. Luego paso eso a través de la solicitud.
Pero no puedo acceder a la solicitud en el método Configure() en el archivo Startup.cs. ¿Hay alguna manera de hacer que esto funcione? Realmente quiero poder establecer dinámicamente la SourcePath.
¡Muchas gracias!
Saludos
davy.ai
Como experto en tecnología de la información especializado en c#, asp.net-core, single-page-application y .net-core-3.1, puedo sugerir una solución para el problema al que te enfrentas al servir una versión estática de tu aplicación de Angular cuando Googlebot rastrea tu sitio web.
Puedes intentar establecer dinámicamente la ruta de origen utilizando el siguiente código en tu archivo middleware:
Aquí, estás verificando el agente de usuario para ver si es Googlebot y configurando una bandera y una ruta de origen en consecuencia.
A continuación, en tu archivo Startup.cs, puedes modificar el código
app.UseSpa
para establecer dinámicamente la ruta de origen en función de la bandera establecida en el middleware:Este código verifica la bandera “isCrawler” y establece la ruta de origen en “StaticClientApp” si es verdadera, de lo contrario la establece en “ClientApp”.
Con esta solución, aún puedes utilizar tu middleware existente para detectar Googlebot y servir de forma dinámica la versión estática de tu SPA de Angular.