内部有问号或带有angularjs的url存在问题

时间:2015-11-10 00:27:32

标签: javascript angularjs .htaccess url mod-rewrite

我在允许用户查看帖子名称中有问号或多个帖子的帖子时遇到了一些问题。当访问url mysite.com/posts/user/postname时,angular会选择:user和:postName并检索必要的数据,但是如果:postName包含一个或多个问号,则它似乎打破了路径并且页面可以找不到帖子,因为它与带有问号的实际帖子名称不匹配。但是,如果我输入带有问号%3f的ascii版本的postname,它可以工作并显示正确的数据。

我要么想要重写url来替换?使用%3f或修复我的角度脚本。路线如下所示,控制器的相关部分如下所示。

<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
  <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2"></div>
  <div class="col-lg-7 col-md-7 col-sm-7 col-xs-7"></div>
  <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3"></div>
</div>

控制器:

.when('/posts/:postUser/:postName', {
                title: 'View Post',
                templateUrl: 'posts/view-post.php',
                controller: 'userSingleCtrl',
                resolve: {
                    post: function(services, $route) {
                        var postName = $route.current.params.postName;
                        var postUser = $route.current.params.postUser;
                        return services.getUserSingle(postName, postUser);
                        return services.getComments(postName, postUser);
                    }
                }
            })

以防万一当前的htaccess规则造成这种情况,并且实际上并不是我的htaccess。

var postName = ($routeParams.postName) ? $routeParams.postName : 'Doesnt Exist';
    var postUser = ($routeParams.postUser) ? $routeParams.postUser : 'Doesnt Exist';
    var original = post.data;
    original._name = postName;
    original._user = postUser;
    $scope.post = angular.copy(original);
    $scope.post._name = postName;
    $scope.post._user = postUser;

1 个答案:

答案 0 :(得分:1)

以下链接显示了使用角度过滤器应用uri编码的示例。您可能会在生成帖子链接以进行编码时执行相同的操作吗? (和其他字符)进入有效的uri。

How to generate url encoded anchor links with AngularJS?