J'ai une page Web que je voudrais rediriger vers un lien spécifique si l'utilisateur vient de http: //

<script language="JavaScript">
  var loc = window.location.href+'';
    if (loc.indexOf('http://')==0){
      window.location.href = loc.replace('http://','https://secure.example.com/app');
    }
</script>

Si l'utilisateur vient de http://example.com/app ou de n'importe quel http: // je voudrais redirigez-le vers ce lien exact.

Lorsque j'exécute ce JavaScript, il prend https://secure.example.com/app et ajoute un domaine .com / app comme ci-dessous

https://secure.example.com/appexample.com/app

Toute l'aide pouvant etre apportée serait très appréciée.

J'ai aussi essayé la chose meta tag <meta http-equiv="refresh" content="2;url=https://secure.example.com/app" />

Mais c'est juste rafraîchissant et ne se sent pas bien avec le changement de page d'hésitation.

0
David Brierton 11 avril 2018 à 23:11

3 réponses

Meilleure réponse
<script language="JavaScript">
  var loc = window.location.href+'';
    if (loc.indexOf('http://www.')==0){
         window.location.href = loc.replace('http://www.','https://secure.');
    }
    else if (loc.indexOf('http://')==0) {
        window.location.href = loc.replace('http://','https://secure.');
    }
</script>

Il faisait ce que vous décrivez parce que vous remplaciez http:// par https://secure.example.com/app donc bien sûr tout ce qui était après http:// sera toujours là après.

1
Jim W says reinstate Monica 11 avril 2018 à 20:26

Je recommanderais simplement de remplacer http:// par https://secure. lorsqu'il n'y a pas www.
Pour couvrir également les cas où il y a un www, vous pouvez simplement remplacer www. par rien:

//var loc = window.location.href;
var loc = 'http://www.example.com/app';
console.log(loc);
loc = loc.replace('www.', '');
loc = loc.replace('http://', 'https://secure.');
console.log(loc);
1
Obsidian Age 11 avril 2018 à 20:17

Ajoutez ceci à votre fichier de configuration de serveur au lieu de le faire en html

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

301 REDIRECT devrait être la meilleure façon de le faire

Pour une approche javascript (es6). pas la manière recommandée car la redirection du navigateur n'est pas toujours fiable

 return location.protocol != 'https:' ? location.protocol = "https:" 
: {do nothing logic}
1
karthik006 11 avril 2018 à 20:28