"base href" 使用 ui-router 在路由 url 中添加目录路径
"base href" adds directory path in routing urls using ui-router
总结:
使用<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
.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]
这是我在模板中引用状态的方式:
<a ui-sref='home'>Go to home</a>
当点击这个 link 它重定向到这个 url : http://www.example.com/prod/public/home
要求:
url 应该是 http://www.example.com/home
而不是 http://www.example.com/prod/public/home
angular 路由中的 <base href="/prod/public/"/>
不是设置文档根目录/掩码 url 而是在 url 前面加上定义的 url 在 HTML5 模式下。
当您定义路线时,例如 /home
angular 将正确地将 URL 设置为 /prod/public/home
。如果您希望 urls 没有该文件夹结构,那么您需要将文件放在根目录中(尤其是在共享主机的情况下)或更改 Nginix / Apache Document root 设置以指向正确的路径。然后你可以设置将你的 urls 读作 /home etc
总结:
使用<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
.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]
这是我在模板中引用状态的方式:
<a ui-sref='home'>Go to home</a>
当点击这个 link 它重定向到这个 url : http://www.example.com/prod/public/home
要求:
url 应该是 http://www.example.com/home
而不是 http://www.example.com/prod/public/home
angular 路由中的 <base href="/prod/public/"/>
不是设置文档根目录/掩码 url 而是在 url 前面加上定义的 url 在 HTML5 模式下。
当您定义路线时,例如 /home
angular 将正确地将 URL 设置为 /prod/public/home
。如果您希望 urls 没有该文件夹结构,那么您需要将文件放在根目录中(尤其是在共享主机的情况下)或更改 Nginix / Apache Document root 设置以指向正确的路径。然后你可以设置将你的 urls 读作 /home etc