只是想说我真的很喜欢prerender.io,但我现在遇到了问题,我想知道是否我做错了什么,有更多经验的人可以帮助我.
我在prerender.io网站上遇到了同样的问题,并且我在Debian Linux机器箱中设置了prerender用于本地执行.
我的新站点是ASP.Net MVC和angular的混合,其中angular表示服务器上MVC路由中的工作流(或内容类别).
一类内容的示例是:
http://[somesitename]/PublicContent/#!/news http://[somesitename]/PublicContent/#!/welcome
MVC服务器端路由是:
http://[somesitename]/PublicContent
和#!/ news和#!/ welcome是角度应用程序路由,欢迎也是默认路由.
当我将URL发送到prerender.io服务或我的本地实例时:
http://service.prerender.io/http://[somesitename]/PublicContent/#!/news
prerender服务只呈现:
http://[somesitename]/PublicContent
而#忽略了客户端路线#!
因此,对于每个MVC路由的所有页面,我只是获取多次呈现的默认路由...
这是prerender.io的错误吗?或者我没有没有正确配置的东西?
我有:
在我的所有页面的头部,如果那将是重要的.
在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); }