2017-08-22 4 views
-1

Toutes les façons possibles d'écrire un nom de domaine doivent être réécrites en https et non-www. Ces règles s'appliquent également à tous les sous-domaines (https et non-www).Améliorer la réécriture htaccess pour SSL, non WWW en utilisant des sous-répertoires

Le site principal doit être réécrit dans un dossier appelé "principal". Pour le moment j'ai un sous-domaine qui devrait être réécrit dans un dossier appelé "sub". J'ai donc commencé à travailler avec .htaccess mais ce code est un peu brouillon et je suis à peu près sûr qu'il y a une façon plus agréable/plus propre de réaliser ce que je veux.

Quelqu'un pourrait-il m'aider à améliorer le fichier .htaccess suivant?

RewriteEngine on 


RewriteCond %{HTTP_HOST} ^www\. 
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$ 
RewriteRule^%1%3%{REQUEST_URI} [R,L] 

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/main/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /sub/$1 

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ /sub/$1 


# Force https 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

L'URL du domaine principal devrait être comme: https://example.com et sous-domaine devrait être comme https://sub.example.com

Répondre

2

Vous pouvez utiliser ces règles

RewriteEngine on 

#redirect main site to https non www 
RewriteCond %{HTTP_HOST} ^www\. [OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(mainsite\.com)$ 
RewriteRule^https://%1%{REQUEST_URI} [NE,L,R] 
#rewrite mainsite to /mainsite folder 
RewriteCond %{HTTP_HOST} ^(www\.)?mainsite\.com$ 
RewriteCond %{REQUEST_URI} !^/mainsitefolder 
RewriteRule^/mainsitefolder%{REQUEST_URI} [L] 

#redirect subdomain to https and subfolder 

RewriteCond %{HTTP_HOST} ^sub.domain.com$ [OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(sub\.domain\.com) 
RewriteRule^https://sub.domain.com%{REQUEST_URI} [NE,L,R] 
#rewrite subdomain to subfolder 
RewriteCond %{HTTP_HOST} ^sub.domain.com$ 
RewriteCond %{REQUEST_URI} !^/subdomainfolder 
RewriteRule^/subdomainfolder%{REQUEST_URI} [L] 
+0

Merci pour votre réponse! Votre solution fonctionne parfaitement pour le domaine principal, mais échoue pour le sous-domaine. Quand j'entre https: // www.sub.example.com le www ne sera pas enlevé et quand j'entre 'www.sub.example.com' le www ne sera pas enlevé et aussi celui-ci n'est pas redirigé à https. – Piet

+0

@piet j'ai mis à jour la règle. – starkeen

+1

Semble fonctionner maintenant, merci beaucoup! – Piet