"base href" добавляет путь к каталогу в URL-адресах маршрутизации с использованием ui-router
Резюме:
Когда используешь <base href="/prod/public/" />
, это добавляет путь к каталогу в URL маршрутизации 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>
При нажатии на эту ссылку он перенаправляет на этот URL: http://www.example.com/prod/public/home
Требование:
URL должен быть http://www.example.com/home
вместо http://www.example.com/prod/public/home
1 ответ
<base href="/prod/public/"/>
в угловой маршрутизации не для того, чтобы установить корень документа / Маска URL, а для того, чтобы предварительно добавить URL с определенным URL в режиме HTML5.
Когда вы определяете маршрут, например /home
Angular правильно установит URL как /prod/public/home
, Если вы хотите, чтобы ваши URL-адреса не имели такой структуры папок, вам нужно будет поместить файлы в корневой каталог (особенно в случае общего хостинга) или изменить корневой параметр Nginix / Apache Document, чтобы он указывал на правильный путь. Затем вы можете установить, чтобы ваши URL читались как /home и т. Д.