"base href"使用ui-router在路由URL中添加目录路径

Roh*_*dal 6 .htaccess base-tag angularjs angular-ui-router ui-sref

摘要:

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

我的角度应用程序托管在prod/public目录中.

在我的public/index.html:

<base href="/prod/public/" />
Run Code Online (Sandbox Code Playgroud)

我的路线是这样的:

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

目录结构:

public_html
      -.htaccess
      - other folders
      - prod
           - public
                - app
                - index.html
           - bower.json
           - .htaccess
           - package.json
           - gulpfile.js
           - Readme.md
Run Code Online (Sandbox Code Playgroud)

.htaccess内部prod目录:

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]
Run Code Online (Sandbox Code Playgroud)

以下是我在模板中引用状态的方法:

<a ui-sref='home'>Go to home</a>
Run Code Online (Sandbox Code Playgroud)

点击此链接后,它会重定向到此网址: http://www.example.com/prod/public/home

要求:

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

Jar*_*att 3

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

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