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]
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
.
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é.
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
.
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]