13 votes

Mode HTML5 Angular, le routeur passe à un autre état lors du rechargement de la page

J'essaie de supprimer le hash tag de mon site web. J'y suis parvenu en suivant le code suivant.

$locationProvider.html5Mode(true);

J'ai également ajouté l'URL de base dans le fichier d'index.

Mon problème est que si je suis dans l'état contct-us après avoir rechargé toute la page, je suis redirigé vers l'état home qui est défini comme l'état otherwise.

Les configurations utilisées sont -

s base de données - mysql

J'ai ajouté le code suivant dans .htaccess pour la règle de réécriture -

     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]

Résultat attendu - Après avoir rechargé la page contact-us any, je veux aller sur la même page.

3voto

Phil Points 48960

Pour prendre en charge le rechargement des URL de route en mode HTML5, vous devez mettre en œuvre la réécriture d'URL côté serveur afin de diriger les requêtes non liées à un fichier (c'est-à-dire les requêtes qui ne sont pas explicitement liées à un fichier existant) vers votre fichier d'index, en général index.html .

A partir de la la documentation

L'utilisation de ce mode nécessite la réécriture de l'URL côté serveur, c'est-à-dire que vous devez réécrire tous vos liens vers le point d'entrée de votre application (par exemple index.html).

Votre règle de réécriture ne doit pas comporter de # dans l'URL de destination. Au lieu de cela, utilisez ceci

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]

Source ~ https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode

De plus, il n'est pas nécessaire de définir RewriteBase .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X