6

概括 :

使用时<base href="/prod/public/" />,在路由 urls 中添加目录路径e.x. http://www.example.com/prod/public/home

我的 Angular 应用程序托管在prod/public目录中。

在我的public/index.html

<base href="/prod/public/" />

我的路线是这样的:

$stateProvider
     .state('home', {
      url: '/home',
      templateUrl: function($stateParams) {
          var path = 'app/users/views/home.html';
          return path;
      },
      controller: 'HomeCtrl'
})

目录结构:

public_html
      -.htaccess
      - other folders
      - prod
           - public
                - app
                - index.html
           - bower.json
           - .htaccess
           - package.json
           - gulpfile.js
           - Readme.md

.htaccessprod目录:

RewriteEngine On
Options -Indexes
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ public/index.html [L]

这是我在模板中引用状态的方式:

<a ui-sref='home'>Go to home</a>

单击此链接时,它会重定向到此 url:http://www.example.com/prod/public/home

要求 :

网址应该http://www.example.com/home代替http://www.example.com/prod/public/home

4

1 回答 1

3

角度路由不是设置文档根<base href="/prod/public/"/>目录/屏蔽 url,而是在 HTML5 模式下使用定义的 url 预先添加 url。

当您定义路由时,例如/homeangular 会将 URL 正确设置为/prod/public/home. 如果您希望您的 url 没有该文件夹结构,那么您需要将文件放在根目录中(尤其是在共享主机的情况下)或更改 Nginix / Apache Document 根设置以指向正确的路径。然后,您可以设置这将使您的网址读取为 /home 等

于 2016-10-03T12:49:20.733 回答