web-dev-qa-db-fra.com

Toujours rediriger vers https sans www

J'ai un site web et j'ai récemment installé un certificat SSL. Je souhaite que tous les liens vers le site soient toujours redirigés vers le site sécurisé sans www, car j'ai rendu le protocole SSL applicable aux non-www.

De plus, j'ai WHMCS dans le backend et je veux rediriger la page example.com/whmcs vers example.com/client-portal, car j'ai un plugin tiers qui est lié à whmcs.

Que dois-je insérer dans mon fichier .htaccess et dans quels dossiers dois-je insérer le fichier? Puis-je tout spécifier depuis root et si tel est le cas, comment forcer WHMCS à en être satisfait?

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC] 
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

Modifier

La bonne nouvelle est que j'ai résolu la première partie du problème. Toutes les URL sont maintenant redirigées vers le site Web non-www https. Le code qui a résolu ce problème a été fourni par @John Conde - merci John!

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

Mon prochain objectif est d'avoir example.com/whmcs rediriger vers example.com/client-portal.

... mais sans rediriger example.com/whmcs/admin vers example.com/client-portal/admin. En d'autres termes, /whmcs/admin ne doit pas être redirigé.

J'ai essayé la solution suivante mais sans succès. Je l'apprécierai si vous pouvez aider.

RewriteCond !^example\.com\/whmcs\/admin
RewriteCond ^example\.com\/whmcs$
RewriteRule https://example.com/client-portal [R=301,L]

Mon intention était que cela provoque la redirection de /whmcs mais pas pour /whmcs/admin.

1
TJVR

Vous ne savez pas si cela engloberait complètement votre objectif, mais cela transformerait le mode http www en mode https non www:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Ensuite, pour rediriger les whmcs vers une nouvelle URL, vous pouvez probablement utiliser un simple 301: Redirect 301 /whmcs /client-portal

Ceux-ci iraient tous les deux à la racine de votre application, ou éventuellement à l'endroit où un enregistrement A est récupéré.

1
dhaupin

Vous pouvez également adopter plusieurs règles de réécriture. Remplacez example.com par votre nom de domaine actuel.

RewriteEngine On 

RewriteCond %{HTTPS} off
# HTTPS is off!
# Redirect to the secure canonical URL
RewriteRule (.*) https://example.com/$1 [L,R=301]

RewriteCond %{HTTP_Host} !^example\.com$ [NC]
# Host name is not correct!
# (maybe it has a www?)
# Redirect to the secure canonical URL
RewriteRule (.*) https://example.com/$1 [L,R=301]

En ce qui concerne la redirection succeedonline.co.za/whmcs, vous pouvez utiliser une seule règle de réécriture pour cela:

RewriteRule ^whmcs$ https://example.com/client-portal [L,R=301]

Le ^ signifie "commence par" et le $ signifie "se termine par", de sorte que la redirection ne sera déclenchée que lorsque l'URL est exactementsucceedonline.co.za/whmcs et non quand c'est succeedonline.co.za/whmcs/admin.

1

J'ai réalisé qu'il ne redirige pas encore le site non-www sous le protocole HTTPS. Cela fonctionne cependant bien sous le protocole HTTP. Voici un extrait de mon fichier complet .htaccess:

RewriteOptions inherit

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC] 
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC] 
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

#RewriteCond !^example\.com\/clients\/bestuur
#RewriteCond ^example\.com\/clients$
#RewriteRule https://example.com/client-portal [R=301,L]
1
TJVR