1 votes

J'essaie de forcer WWW et HTTPS et seulement deux de mes trois règles fonctionnent.

Cela ne fonctionne pas pour moi qu'est-ce que je fais de travers ? J'obtiens l'erreur redoutée " trop de redirections ". J'essaie de forcer toutes mes urls à WWW et https, bien que je me contenterais de pouvoir tout forcer à https.

    RewriteEngine on
    RewriteBase /

    RewriteCond %{http_host} ^all-service-musical.com [nc]
    RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301,nc]

    RewriteCond %{http_host} ^asmusic.org [nc]
    RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301]

    RewriteCond %{http_host} ^www.all-service-musical.com [nc]
    RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301,nc]

Les deux premières règles fonctionnent bien ensemble, mais la troisième règle qui tente de changer l'url www en https casse tout.... une idée ?

J'ai également essayé de supprimer tout le code ci-dessus et j'ai essayé d'accomplir la partie http à https de la tâche en utilisant :

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

J'obtiens également une erreur "trop de redirections" lorsque j'utilise l'approche ci-dessus.

J'ai également essayé ce produit seul :

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [R,L]

Même résultat ... casse le site avec une erreur de trop de redirections.

MrWhite ...Merci d'avoir pris le temps de répondre, le code qui est actuellement dans le fichier htaccess est :

RewriteEngine on
RewriteBase /
RewriteCond %{http_host} ^www.all-service-musical.com [nc]
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [r=301,nc]

RewriteCond %{http_host} ^asmusic.org [nc]
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [r=301]

RewriteCond %{http_host} ^www.asmusic.org [nc]
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [r=301] 

Comme le certificat est pour all-service-musical.com (je commence à me demander si ce n'est pas un mauvais conseil de la part de l'hébergeur), j'ai pensé essayer de réécrire le code pour que la version non WWW soit la cible, mais j'ai toujours le même problème : quand je tape all-service-musical.com dans la barre d'adresse, il apparaît comme non sécurisé, alors que quand j'avais le code tel qu'il avait été posté à l'origine, la version WWW, quand elle était tapée directement, apparaissait comme non sécurisée.

Je pense que ce bout de code que vous avez fourni :

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=302,L]

Si tout le reste est supprimé, cela devrait fonctionner tout seul dans une certaine mesure, mais cela casse le site avec une erreur "trop de redirections" même si c'est la seule chose dans le fichier htaccess.

J'apprécie votre conseil d'utiliser une redirection 302 jusqu'à ce que je trouve le bon code pour cela. Tout autre conseil sur l'origine de mon problème sera grandement apprécié.

0voto

MrWhite Points 11269

Si vous obtenez toujours des boucles de redirection après avoir essayé toutes ces directives, videz le cache de votre navigateur. Tous ces derniers ne devraient pas déclencher de boucles de redirection. Pour cette raison, il est conseillé de tester avec des redirections 302 (temporaires) et de ne passer à des redirections 301 (permanentes) que lorsque vous êtes sûr qu'elles fonctionnent correctement.

RewriteCond %{http_host} ^all-service-musical.com [nc]
RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301,nc]

RewriteCond %{http_host} ^asmusic.org [nc]
RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301]

RewriteCond %{http_host} ^www.all-service-musical.com [nc]
RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301,nc]

Vos trois premiers RewriteRule Il manque à toutes les directives L de sorte que le traitement se poursuivra avec la règle suivante, etc. Votre troisième règle qui tente de "changer l'url www en https" résultera certainement en une boucle de redirection puisque vous redirigez simplement vers elle-même. Pour rediriger de HTTP vers HTTPS, vous devez d'abord vérifier la présence de HTTP (ie. HTTPS es off ), comme vous le faites dans vos dernières tentatives.

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

Votre 4ème règle redirige vers HTTPS sur le même hôte - c'est potentiellement une bonne idée, à condition que vos différents domaines (n'en avez-vous que deux ?) aient tous un certificat de sécurité installé.

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [R,L]

Il s'agit d'une redirection vers l'apex du domaine, et non vers le sous-domaine www (le contraire des trois premières règles). Cela pourrait potentiellement entraîner une boucle de redirection si le code du site lui-même émettait une redirection vers l'hôte canonique.

Hypothèses :

  • Vous avez un seul nom d'hôte canonique www.all-service-musical.com et tous les autres domaines y sont redirigés.
  • Le certificat SSL est installé directement sur votre serveur d'application et n'est pas géré par un proxy frontal.
  • Vous ne mettez pas en œuvre le système HSTS. (Si c'est le cas, vous devez d'abord rediriger vers HTTPS sur le même hôte et vous assurer qu'un certificat SSL est installé sur chaque domaine).

Essayez plutôt ce qui suit, en haut de votre page d'accueil .htaccess fichier :

RewriteEngine On

# Redirect non-canoncial hostname
RewriteCond %{HTTP_HOST} !^www\.all-service-musical\.com$
RewriteRule (.*) https://www.all-service-musical.com/$1 [R=302,L]

# Redirect to HTTPS
# NB: This only applies if the canonical hostname is requested over HTTP
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=302,L]

Comme indiqué ci-dessus, ne remplacez le 302 par le 301 qu'une fois que vous avez confirmé qu'il fonctionne correctement, afin d'éviter tout problème avec le cache du navigateur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X