web-dev-qa-db-fra.com

Redirection de caractères génériques pour les versions HTTPS et non-www

Je souhaite activer SSL pour mon site Web principal et les sites Web de sous-domaines. Pour des raisons de référencement, je dois rediriger les requêtes HTTP vers les requêtes HTTPS. Je pense que je devrais le faire en utilisant une redirection avec un joker dans mon fichier .htaccess, mais j'ai déjà have une redirection avec un joker dans mon fichier htaccess comme suit:

RewriteCond %{HTTP_Host} ^mscaspian.com$
RewriteRule (.*) http://www.mscaspian.com/$1 [R=301,L]

Comme vous pouvez le constater, cela redirigera la version non WWW de mon site vers la version WWW. J'ai besoin de savoir comment utiliser les deux redirections pour mes sites Web et mon domaine.

3
Conspiria

On dirait que vous n'avez pas "échappé" aux barres obliques de votre directive. Le fait de mettre des barres obliques inverses avant tout /. ou : devrait le faire fonctionner. Ajouter également les ^ ("commence par") et $ ("se termine par") sur l'aide du caractère générique. Voici ce que nous utilisons:

Domaine standard: Il existe peut-être une méthode consolidée, mais cet extrait de code devrait fonctionner pour un domaine standard. Changez la cible du premier RewriteRule en https si vous avez besoin de tous en mode https:

RewriteCond %{HTTP_Host} ^example\.com$
RewriteRule ^(.*)$ "http\:\/\/www\.example\.com\/$1" [R=301,L]

RewriteCond %{HTTPS_Host} ^example\.com$
RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L]

Addon Domain: Si vous essayez de faire cela avec un "domaine addon" et que vous voulez rediriger le schéma d’utilitaire de sous-domaine, ceci le ferait. Encore une fois, changez la cible de la première directive en https et cela devrait forcer SSL:

RewriteCond %{HTTP_Host} ^addondomain\.example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.addondomain\.example\.com$ [OR]
RewriteCond %{HTTP_Host} ^addondomain\.com$
RewriteRule ^(.*)$ "http\:\/\/www\.addondomain\.com\/$1" [R=301,L]

RewriteCond %{HTTPS_Host} ^addondomain\.example\.com$ [OR]
RewriteCond %{HTTPS_Host} ^www\.addondomain\.example\.com$ [OR]
RewriteCond %{HTTPS_Host} ^addondomain\.com$
RewriteRule ^(.*)$ "https\:\/\/www\.addondomain\.com\/$1" [R=301,L]

J'espère que cela pourra aider!

2
dhaupin

Quelques hypothèses:

  1. Tout devrait être redirigé vers HTTPS
  2. Seul le domaine apex doit être redirigé vers le sous-domaine www. Les sous-domaines ne sont pas redirigés vers le sous-sous-domaine www. c'est à dire. subdomain.example.com n'est pas redirigé vers www.subdomain.example.com.
  3. Votre certificat SSL couvre le sous-domaine principal, www et tous les sous-domaines.
  4. Votre certificat SSL est installé sur le serveur d'applications, pas sur un proxy frontal.

Essayez quelque chose comme ceci en utilisant mod_rewrite dans le fichier racine .htaccess:

RewriteEngine On

# Redirect the apex domain to www subdomain (ensure HTTPS)
RewriteCond %{HTTP_Host} ^example\.com [NC]
RewriteRule (.*) https://www.%{HTTP_Host}/$1 [R=301,L]

# Redirect to HTTPS if not already
RewriteCond %{HTTPS} !on
RewriteRule (.*) Https://%{HTTP_Host}/$1 [R=301,L]

NB: Pour aider au développement, il est souvent plus facile de tester avec des redirections 302 (temporaires), qui ne sont pas mises en cache par le navigateur. 301 (permanentes) redirections sont mises en cache hard par le navigateur (par défaut), ce qui peut rendre les tests problématiques.

1
MrWhite