prerender.io的问题总是呈现客户端路由列表的默认角度路由

Jam*_*Eby 2 asp.net-mvc seo prerender angularjs

只是想说我真的很喜欢prerender.io,但我现在遇到了问题,我想知道是否我做错了什么,有更多经验的人可以帮助我.

我在prerender.io网站上遇到了同样的问题,并且我在Debian Linux机器箱中设置了prerender用于本地执行.

我的新站点是ASP.Net MVC和angular的混合,其中angular表示服务器上MVC路由中的工作流(或内容类别).

一类内容的示例是:

http://[somesitename]/PublicContent/#!/news

http://[somesitename]/PublicContent/#!/welcome
Run Code Online (Sandbox Code Playgroud)

MVC服务器端路由是:

http://[somesitename]/PublicContent
Run Code Online (Sandbox Code Playgroud)

#!/ news#!/ welcome是角度应用程序路由,欢迎也是默认路由.

当我将URL发送到prerender.io服务或我的本地实例时:

http://service.prerender.io/http://[somesitename]/PublicContent/#!/news
Run Code Online (Sandbox Code Playgroud)

prerender服务只呈现:

http://[somesitename]/PublicContent
Run Code Online (Sandbox Code Playgroud)

而#忽略了客户端路线#!

因此,对于每个MVC路由的所有页面,我只是获取多次呈现的默认路由...

这是prerender.io的错误吗?或者我没有没有正确配置的东西?

我有:

<meta name="fragment" content="!">
Run Code Online (Sandbox Code Playgroud)

在我的所有页面的头部,如果那将是重要的.

Jam*_*Eby 6

在prerender.io与那些人交谈,看来我对Asp.Net MVC中间件进行了修改,它正在删除?_escpaed_fragment _ = /完全是对此代码的不正确修改,这本身是不正确的(基本代码)删除?_escpaed_fragment _ = /并将其替换为,我修改了代码以删除?_escpaed_fragment _ = /并将其替换为#!).

期望prerender.io服务?_escpaed_fragment _ = /存在于URL中,如果找到它,它将用#替换它!在调用您的网站以缓存页面之前.它不期望找到#!,如果它存在,它将无法正确处理URL.

因此,如果您使用的是Asp.Net MVC中间件,则应注释掉PrerenderModule.cs中的以下代码:

        // Remove the _escaped_fragment_ from the URL if it exists!
        var escapedFull = "?" + _Escaped_Fragment + "=/";
        if (url.Contains(escapedFull))
        {
            url = url.Replace(escapedFull, string.Empty);
        }
Run Code Online (Sandbox Code Playgroud)