摘要:
使用<base href="/prod/public/" />
时,会在路由网址中添加目录路径 e.x.
http://www.example.com/prod/public/home
我的角度应用程序托管在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>
点击此链接后,会重定向到此网址:http://www.example.com/prod/public/home
要求:
网址应为 http://www.example.com/home
,而不是 http://www.example.com/prod/public/home
答案 0 :(得分:1)
角度路由中的<base href="/prod/public/"/>
不是设置文档根目录/掩码网址,而是在HTML5模式下使用定义的URL预先添加URL。
定义路线时,例如/home
angular会将网址正确设置为/prod/public/home
。如果您希望您的网址没有该文件夹结构,那么您将需要将文件放在根目录中(特别是在共享主机的情况下)或更改Nginix / Apache Document根设置以指向正确的路径。然后,您可以设置将您的网址读取为/ home等