【问题标题】:angularJS, prerender.io and ZF2: testing locally returns 304 access forbiddenangularJS、prerender.io 和 ZF2:本地测试返回 304 禁止访问
【发布时间】:2014-10-28 17:27:21
【问题描述】:

我是这个东西的 n00b,我正在尝试为 prerender.io 设置一个测试环境。 我在这里下载了预渲染:https://github.com/prerender/prerender.git,我已经从命令行运行它:

$ 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'
    )
);

这是我的角度路由器:

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

此网址返回“禁止访问!”:http://localhost/shop/api/list?_escaped_fragment_=/list

error.log 约束:

[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 文件:

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]

【问题讨论】:

    标签: angularjs zend-framework2 rerender


    【解决方案1】:

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

    首先,您可能要使用的 URL 是 http://localhost/shop/api/list?_escaped_fragment_=

    但您可能不想预呈现 API 调用。那应该是 http://localhost/shop/list/1?_escaped_fragment_= 或者你的实际页面的 url 结构。

    【讨论】:

    • API url 目前还不是真正的 API。我已经尝试了 escaped_fragment 键,但到目前为止还没有运气。控制台没有输出任何东西......
    • 听起来这是一个 nginx 问题,如果它甚至没有完全到达 Prerender 服务器。
    • 我一直没有注意,当我启动 node server.js 时它输出:服务器运行在端口 3000。所以当我这样做时:'prerender_url' => 'localhost:3000/public/assets/services/prerender'控制台返回“got 200”等。现在我必须找出如何通过 PHP 访问渲染的 shizzle。我使用github.com/zf-fr/zfr-prerender,文档并没有真正告诉我如何检索内容,它说:“从缓存中检查是否已经有内容”
    • 我现在遇到的真正麻烦是它输出奇怪的字符
    • 请随时通过 todd@prerender.io 给我发电子邮件。乐于提供更多帮助
    猜你喜欢
    • 2016-06-22
    • 2017-11-26
    • 2017-12-20
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多