1

私が使用している 1 つの Web アプリケーションでは、以下のような URL を扱っています。

http://localhost:8080/section/value.with.periods

これvalue.with.periodsは、angular で宣言するような URL パラメータですrouteProvider

angular.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        .when('/section/:param', {
            templateUrl: 'url-to-template',
            controller: 'ExampleCtrl',
            resolve: {
                ...
            }
        });
}]);

問題は、Grunt タスクで実行されているサーバーが、ピリオドを含む URL を処理できないことです。

Cannot GET /section/value.with.periods

grunt-contrib-proxyとで Grunt を実行しています。 を構成connect-modrewriteするlivereloadタスクconnect-modrewriteは次のとおりです。

        livereload: {
            options: {
                open: 'http://localhost:<%= connect.options.port %>',
                base: [
                    '.tmp',
                    '<%= config.app %>'
                ],
                middleware: function(connect, options) {
                    if (!Array.isArray(options.base)) {
                        options.base = [options.base];
                    }

                    // Setup the proxy
                    var middlewares = [proxySnippet];

                    var modRewrite = require('connect-modrewrite');
                    middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']));
                    // middlewares.push(modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png|\\.jpg\\.gif|\\swf$ /index.html [L]']));


                    // Serve static files.
                    options.base.forEach(function(base) {
                        middlewares.push(connect.static(base));
                    });

                    // Make directory browse-able.
                    var directory = options.directory || options.base[options.base.length - 1];
                    middlewares.push(connect.directory(directory));

                    return middlewares;
                }
            }
        }

Angular で使用されるパラメーターにピリオドを含む URL を処理できる必要があります。どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1