web-dev-qa-db-fra.com

Comment rediriger tous (www) .example. (Com / net / org) vers https://example.com

Comment configurer une URL/URI pour

http(s)://(www).example.(com/net/org)/somepath

pour finir au correspondant:

https://example.com/somepath

J'imagine que la solution (s'il en existe une) impliquera les paramètres DNS et .htaccess voodoo. Mais je ne comprends pas vraiment comment ça marche (en particulier .htaccess). Donc, quelques suggestions spécifiques sur ce qu'il faut lire seraient également appréciées. (Oui, je peux google, mais cela semble être une question assez spécifique et/ou ésotérique, et je n'ai pas réussi à trouver de solution. Ou je pourrais être stupide ...)

Installer:

J'ai des domaines example.net/.org/.com tous enregistrés auprès du même registraire. Par l'intermédiaire des paramètres de domaine du registraire, j'ai example.net et .org configuré pour rediriger (301) vers example.com. J'ai example.com hébergé dans une société d'hébergement partagée séparée qui utilise Apache & cPanel.

Actuellement, certaines redirections fonctionnent: http://(with or without www).example.(net/org) => http://example.com.

Cependant, http://www.example.com ne redirige pas uniquement vers http://example.com.

Maintenant pour la partie la plus délicate. L'hébergeur a également "SSL basé sur SNI". Ainsi, https://exmple.com et https://www.example.com fonctionnent tous les deux, mais avec https, l'URL www ne redirige pas vers le domaine de base (https://example.com).

De plus, https://example.net ne fonctionne pas non plus, avec ou sans le www (pas de connexion/expiration).

Donc, en bref (trop tard ??), si possible, comment configurer toutes les permutations de ce qui précède pour aboutir au résultat correspondant:

https://example.com/somepath

Ou, si la réponse nécessitait la réalisation d'une thèse de doctorat à mettre en œuvre, quelle est la configuration commune/raisonnable?

3
Self Evident

De plus, https://example.net ne fonctionne pas non plus, avec ou sans le www (pas de connexion/expiration).

Pour que .net et .org fonctionnent sur HTTPS, vous devez disposer de certificats SSL couvrant ces domaines (comme vous le faites déjà pour .com) - "SSL basé sur SNI" convient. Cependant, pour ce faire, vous devez probablement avoir le DNS de ces domaines pointant vers le même serveur (votre compte d'hébergement) et ces domaines configurés en tant que domaines "Alias" (ou "garés") dans votre compte cPanel. c'est à dire. Modifiez les noms de serveurs sur ces domaines chez votre registraire, comme vous l'avez probablement fait pour example.com. (À moins que votre registraire de domaine ne puisse configurer SSL pour ces domaines et que vous puissiez configurer la redirection appropriée à partir de cette fin - ce dont je doute fort.)

Vous pouvez ensuite émettre ("Let's Encrypt"?) Des certificats SSL couvrant ces noms de domaine supplémentaires dans cPanel.

Actuellement, vous avez des redirections pour .net et .org de votre registraire, car le DNS est actuellement géré par votre registraire. Lorsque vous pointez le DNS sur votre hébergeur Web, ces redirections cesseront naturellement de fonctionner.

Et maintenant, le .htaccess "voodoo" redirige tout vers votre hôte canonique (example.com) et HTTPS. En réalité, ce n’est vraiment pas si mal, en ce qui concerne les redirections.

En haut du fichier .htaccess à la racine du document, ajoutez les directives mod_rewrite suivantes:

RewriteEngine On
RewriteCond %{HTTP_Host} !^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L]

Ce qui précède indique ... si l'hôte demandé est nonexample.com (l'hôte canonique) ou si la demande n'est pas HTTPS (modèle souhaité), puis redirigez-vous vers https://example.com/somepath.

Notez que ce qui précède est une redirection 302 (temporaire). Changez-le en 301 (permanent) uniquement lorsque vous avez confirmé que tout fonctionne correctement. Les 301 sont mis en cache par le navigateur (par défaut), ce qui peut rendre les tests difficiles.

2
MrWhite