angularJS, prerender.io и ZF2: локальное тестирование возвращает 304 доступ запрещен

Я n00b с этим, я пытаюсь настроить среду тестирования для prerender.io. Я скачал prerender здесь: 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' });
}]);

Этот URL работает нормально: http://localhost/shop/api/list

Этот URL возвращает "Доступ запрещен!": 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]

1 ответ

Вы видите какой-либо консольный вывод на сервере Prerender?

Во-первых, URL, который вы, вероятно, хотите использовать, http://localhost/shop/api/list?_escaped_fragment_=

но вы, вероятно, не хотите обрабатывать вызов API. Это действительно должно быть http://localhost/shop/list/1?_escaped_fragment_= или какова бы ни была ваша структура URL для реальной страницы.

Другие вопросы по тегам