2016-09-23 20 views
6

Podsumowanie:„href baza” dodaje ścieżkę katalogu w adresach URL routingu za pomocą UI-Router

Podczas korzystania <base href="/prod/public/" />, dodaje ścieżkę katalogu w adresach URL routingu e.x.http://www.example.com/prod/public/home

Moja kątowe aplikacja jest obsługiwana w katalogu prod/public.

w moich public/index.html:

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

moich trasach są jak: struktura

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

katalog:

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

.htaccess wewnątrz prod katalogu:

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] 

i tutaj jest jak odwołać stan w szablonie:

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

Po kliknięciu tego łącza przekierowanie do tego adresu URL: http://www.example.com/prod/public/home

Wymagania:

adres URL powinien być: http://www.example.com/home zamiast http://www.example.com/prod/public/home

+1

To właśnie ['base href'] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base) ma to zrobić. Jeśli nie chcesz tego zrobić, nie używaj go ...? –

+0

dlaczego potrzebujesz dodać bazę? – Shreejibawa

+0

Czy używasz Html5Mode Angularjs na? Brak skrótu dla zwykłego przebiegu rytmicznego. – Boris

Odpowiedz

1

<base href="/prod/public/"/> w kątowym routingu nie jest ustawiony korzeń dokumentu/Maska url, ale raczej do poprzedzić adresów URL z określonym adresem URL w trybie HTML5.

Po zdefiniowaniu trasy, np. /home, kątowa prawidłowo ustawi adres URL jako /prod/public/home. Jeśli chcesz mieć swoje adresy URL bez tej struktury folderów, wtedy będziesz musiał umieścić pliki w katalogu głównym (szczególnie w przypadku współdzielonego hostingu) lub zmienić ustawienia katalogu głównego Nginix/Apache, aby wskazać poprawną ścieżkę. Możesz wtedy ustawić, które sprawi, że Twoje adresy URL będą czytane jako/home itd.

+0

dziękuję Jarratt. To będzie działać. –

+0

Potrzebuję twojej małej sugestii na temat struktury katalogów, którą aktualnie posiadam. Zaktualizowałem pytanie przy użyciu bieżącej struktury katalogów aplikacji. Proszę zasugerować mi strukturę, którą muszę teraz wdrożyć, aby rozwiązać ten problem. –