web-dev-qa-db-fra.com

Comment rediriger de manière permanente les URL `http: //` et `www.` vers` https: // `?

J'ai un projet Google App Engine. Sur ce projet, j'ai configuré un domaine personnalisé et un certificat SSL. Par conséquent, je peux utiliser https://www.mysite.xxx, http://www.mysite.xxx Et juste le domaine nu mysite.xxx.

Est-il possible de rediriger définitivement les deux derniers pour toujours utiliser le domaine sécurisé https:// En utilisant la console des développeurs ou dois-je simplement rediriger dans le code?

28
Chez
21
Tom

(Pour Node au moins,)) dans votre app.yaml, ajoutez ce qui suit:

handlers:
- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto

Référence: https://cloud.google.com/appengine/docs/standard/nodejs/config/appref

10
Dave Welling

Par souci d'exhaustivité. La méthode Java consiste à définir la garantie de transport sur confidentiel comme celui-ci.

<security-constraint>
  <web-resource-collection>
    <web-resource-name>profile</web-resource-name>
    <url-pattern>/profile/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>

Vous pouvez également trouver ceci ici dans la documentation .

9
konqi

Au cas où, il n'est pas possible d'inclure des gestionnaires sécurisés dans app.yaml sur App Engine Flexible, ils ne sont pas pris en charge:

Le paramètre sécurisé sous les gestionnaires est désormais obsolète pour l'environnement flexible App Engine. Si vous avez besoin d'une redirection SSL, vous pouvez mettre à jour votre code d'application et utiliser l'en-tête X-Forwarded-Proto pour rediriger le trafic http. (Référence: https://cloud.google.com/appengine/docs/flexible/Java/upgrading#appyaml_changes )

La référence vient de Java, mais elle semble être la même pour Node. J'ai essayé d'inclure des gestionnaires et cela n'a pas fonctionné.

Comme vous pouvez le voir, une solution possible serait "d'utiliser l'en-tête X-Forwarded-Proto pour rediriger le trafic http". Je n'ai pas essayé cela parce que je vais passer à App Engine Standard, mais quelqu'un l'a fait et a expliqué ici .

3
Ruben Lopez

Dans le cas où votre domaine est acheté ou transféré à domaine Google alors vous pouvez le faire dans G-Suite sous Enregistrements synthétiques section:

screencapture-domains-google-redirect-registrar-chetabahana-com-dns-2019-05-27-21_19_24

1
Chetabahana

Cela devrait être fait dans votre application. Veuillez vérifier cet article https://stackoverflow.com/a/54289378/5293578

J'ai essayé le code suivant et cela a fonctionné pour moi (vous devez le mettre avant la demande par défaut et le gestionnaire d'erreurs):

/**==== File: server.js =======**/

/** Express configuration **/

// HTTPS Redirection
if (process.env.NODE_ENV === 'production') {
  app.use (function (req, res, next) {
    var schema = (req.headers['x-forwarded-proto'] || '').toLowerCase();
    if (schema === 'https') {
      next();
    } else {
      res.redirect('https://' + req.headers.Host + req.url);
    }
  });
}

/** ... more configuration **/

// Default request handler
app.use(function(req, res, next) {
  // ... your code
});

// Default error handler
app.use(function(err, req, res, next) {
  // ... your code
});
0