2014-10-28 84 views
1

我是一个n00b这个东西,我想为prerender.io设置一个测试环境。这里 我已经下载预渲染:https://github.com/prerender/prerender.git和我从命令行运行此:angularJS,prerender.io和ZF2:本地测试返回304访问被禁止

$ npm install 
$ node server.js 

我读到这里的文档:https://github.com/zf-fr/zfr-prerender

相反的:

return array(
    'zfr_prerender' => array(
     'prerender_url' => 'http://myprerenderservice.com' 
    ) 
); 

我这样做:

return array(
    'zfr_prerender' => array(
     'prerender_url' => 'http://localhost' 
    ) 
); 

这是我的一个gular路由器:

var ListerApp = angular.module('ListerApp',[ 
    'ListerAppFilters', 
    'sharedFactoryApp', 
    'sharedServiceApp', 
    'ListerAppController', 
    'infinite-scroll', 
    'angular-inview', 
    'ngRoute', 
    'itemsReady' 
]); 

ListerApp.config(['$routeProvider', '$httpProvider', '$locationProvider', function($routeProvider, $httpProvider, $locationProvider) { 
    $locationProvider.html5Mode(true); 
    $locationProvider.hashPrefix('!'); 
    $routeProvider 
     .when('/list/:page?', 
      { 
       templateUrl : '/assets/services/partials/list.html', 
       controller : 'ListerCtrl', 
       reloadOnSearch : false, 
       js : ['/assets/min/shoplist_js.min.js', '/assets/min/bootstrap-typeahead.min.js'], 
       resolve : { 
        sharedServiceAppData: function($sharedData){ 
         return $sharedData.promise(); 
        } 
       } 
      } 
     ) 
     .when('/detail/:id?', 
      { 
       templateUrl: '/assets/services/partials/detail.html', 
       controller: 'DetailCtrl', 
       css : ['/assets/min/star-rating.min.css'], 
       resolve : { 
        sharedServiceAppData: function($sharedData){ 
         return $sharedData.promise(); 
        } 
       } 
      } 
     ).otherwise({ redirectTo: '/list/1' }); 
}]); 

该网址工作正常:http://localhost/shop/api/list

此URL返回 “禁止接入!”:http://localhost/shop/api/list?_escaped_fragment_=/list

error.log中contrains:

[core:error] [pid 5952:tid 1864] (20024)The given path is misformatted or contained invalid characters: [client ::1:50262] AH00127: Cannot map GET /http://localhost/shop/api/list?_escaped_fragment_=/list HTTP/1.1 to file 

我的.htaccess file:

RewriteEngine On 

RewriteRule ^\.htaccess$ - [F] 

RewriteCond %{REQUEST_URI} ="" 

RewriteRule ^.*$ /public/index.php [NC,L] 

RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 

RewriteRule ^.*$ - [NC,L] 

RewriteRule ^public/.*$ /public/index.php [NC,L] 

回答

2

您是否在Prerender服务器上看到任何控制台输出?

首先,你可能想使用的网址是http://localhost/shop/api/list?_escaped_fragment_=

但你可能不想预渲染API调用。这应该很可能是http://localhost/shop/list/1?_escaped_fragment_=或任何你的网址结构是一个实际的网页。

+0

API网址目前不是真正的API。我已经尝试了escaped_fragment键,但目前还没有运气。控制台不会输出任何东西... – poashoas 2014-10-29 10:44:51

+0

这样的声音是一个nginx问题,如果它甚至没有通过Prerender服务器。 – 2014-10-30 13:23:58

+0

我一直没有注意,当我启动节点server.js它输出:服务器端口3000上运行。所以当我这样做:'prerender_url'=>'http:// localhost:3000/public/assets /服务/预渲染“控制台返回”有200“等。现在我必须了解如何通过PHP访问呈现的shizzle。我使用https://github.com/zf-fr/zfr-prerender,文档并没有告诉我如何检索内容,它说:“从缓存中检查是否已经有内容” – poashoas 2014-10-30 14:50:29