2016-09-24 8 views
13

Próbuję usunąć znacznik hash z mojej witryny. Osiągnąłem to, podążając za kodem.Angularny tryb HTML5, router będzie inaczej na stronie przeładować

$locationProvider.html5Mode(true); 

Oprócz dodanego podstawowego adresu URL również w pliku indeksu.

Mój problem jest, jeśli jestem w stanie contct-us po ponownym załadowaniu całej strony. Przekierowuję do stanu macierzystego, który jest zdefiniowany jako stan inny.

Konfiguracja wykorzystywane są -

serwer -Appache bazy danych - MySQL

Dodałem następujący kod w pliku .htaccess na przepisywanie regułę, a także -

 RewriteEngine On 
    php_value post_max_size 120M 
    php_value upload_max_filesize 120M 
    php_value max_execution_time 90 



    RewriteCond %{HTTP_HOST} ^54\.201\.153\.244$ [NC,OR] 

    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

     RewriteCond %{HTTP_HOST} ^adkarlo.com$ [NC] 
     RewriteRule ^(.*)$ https://www.adkarlo.com/$1 [R=301,L] 

     #RewriteBase /html/ 
     ErrorDocument 404 /404.php 

    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule^- [L] 
    RewriteRule ^(.*)$ index.php [L] 

oczekiwany wynik - Po przeładunku z Stań, kontaktuj się z nami na dowolnej stronie, którą chcę przejść na tę samą stronę.

+1

nie może być żadnym '# /' w ścieżce – charlietfl

+0

@charlietfl - Nie ma żadnego adresu URL/w adresie URL, ale raz odświeżam stronę powiedz od/o. Przekierowuje mnie do stanu/home, który jest stanem podanym w innym stanie w stateProvider. – Chetan

+0

@charlietfl - Będę naprawdę wdzięczny, jeśli zaproponujesz mi jakieś rozwiązanie. :) – Chetan

Odpowiedz

3

Aby wesprzeć ponowne ładowanie adresów URL w trybie HTML5, konieczne jest zaimplementowanie przepisywania adresu URL po stronie serwera w celu bezpośredniego kierowania żądań innych niż pliki (to jest wniosków, które nie są jawnie dla istniejącego pliku) do pliku indeksu, zazwyczaj index.html.

Z documentation

Korzystanie z tego trybu wymaga przepisywania URL po stronie serwera, w zasadzie trzeba przepisać wszystkie łącza do punktu wejścia aplikacji (np index.html).

Twoja reguła przepisywania nie powinna zawierać żadnego # w docelowym adresie URL. Zamiast korzystać z tej

RewriteEngine on 

# Don't rewrite files 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

# Rewrite everything else to index.html to allow html5 state links 
RewriteRule^index.php [L] 

Źródło ~ https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode

Ponadto, nie ma potrzeby, aby ustawić RewriteBase.

+0

Edytowałem pytanie i kod w pliku .htaccess nadal otrzymuję ten sam problem. Proszę mi pomóc – Chetan

+0

@Chetan, dlaczego masz 'index.php? /'? Powinien być tylko "index.php" – Phil

+0

wypróbowany z tym również .. nie działa :( – Chetan