Rewrite Server Web Apache 😆

J’ai trouvĂ© :heart:

# Si le port est différent de 443
RewriteCond   %{SERVER_PORT} !^443$ [OR]
# OU pour TOUS les hosts du domaine zw3b.blog
RewriteCond   %{HTTP_HOST} ^(.*).zw3b.blog$ [NC]
# ET si le host est équivalent à WWW
RewriteCond   %{HTTP_HOST} ^www.zw3b.blog$ [NC,OR]
# OU si le host est différent de WW1
RewriteCond   %{HTTP_HOST} !ww1.zw3b.blog$ [NC]
# ET si le host est différent de WW2
RewriteCond   %{HTTP_HOST} !ww2.zw3b.blog$ [NC]
# ET si le host est différent de WW3
RewriteCond   %{HTTP_HOST} !ww3.zw3b.blog$ [NC]
# ET si le l'hÎte est différent du domaine.
RewriteCond   %{HTTP_HOST} !zw3b.blog$ [NC]
# J'envoie sur le nom sans les WWW en HTTPS
RewriteRule   ^(.*) https://zw3b.blog/$1 [R=301,L]

En fait il faut :

  • si Ă©quivalent OR diffĂ©rent ET diffĂ©rent. Il faut Ă©crire comme çà.
  • si Ă©quivalent ET Ă©quivalent OU diffĂ©rent ET diffĂ©rent etc


Soit on met le drapeau [OR] et pour les [AND] pas de drapeau.

Bonne journée.

Test : https://ww3.zw3b.blog/clocks.php?ABC


j’ai l’impression que çà ne redirige pas sur « zw3b.blog » en tentant « www.zw3b.blog » ; ou « test.zw3b.blog » 

En fait, çà ne « rewrite » plus → https://test.zw3b.blog ← pointe sur mon « blog », MAIS en gardant l’adresse « test.zw3b.blog » au lieu de « zw3b.blog » comme je l’ai demandĂ© dans le « rewrite ».

:thinking:


Bon, on va partir du début.

Çà, çà fonctionne HTTP | HTTPS :// « TOUT et N’IMPORTE QUOI » « . » domain.tld : https://all.zw3b.blog → pointe sur → https://zw3b.blog

# Si le port est différent de 443
RewriteCond   %{SERVER_PORT} !^443$ [OR]
# OU pour TOUS les hosts du domaine zw3b.blog
RewriteCond   %{HTTP_HOST} ^(.*).zw3b.blog$ [NC]
# ET si le host est équivalent à WWW
#RewriteCond   %{HTTP_HOST} ^www.zw3b.blog$ [NC,OR]
# OU si le host est différent de WW1
#RewriteCond   %{HTTP_HOST} !ww1.zw3b.blog$ [NC]
# ET si le host est différent de WW2
#RewriteCond   %{HTTP_HOST} !ww2.zw3b.blog$ [NC]
# ET si le host est différent de WW3
#RewriteCond   %{HTTP_HOST} !ww3.zw3b.blog$ [NC]
# ET si le l'hÎte est différent du domaine.
#RewriteCond   %{HTTP_HOST} !zw3b.blog$ [NC]
# J'envoie sur le nom sans les WWW en HTTPS
RewriteRule   ^(.*) https://zw3b.blog/$1 [R=301,L]

Ensuite


J’ai inversĂ© un OR et çà aussi, çà fonctionne → « all » et « www » redirige vers https://zw3b.blog

# Si le port est différent de 443
RewriteCond   %{SERVER_PORT} !^443$ [OR]
# OU pour TOUS les hosts du domaine zw3b.blog
RewriteCond   %{HTTP_HOST} ^(.*).zw3b.blog$ [NC,OR]
# OU si le host est équivalent à WWW
RewriteCond   %{HTTP_HOST} ^www.zw3b.blog$ [NC]
# OU si le host est différent de WW1
#RewriteCond   %{HTTP_HOST} !ww1.zw3b.blog$ [NC]
# ET si le host est différent de WW2
#RewriteCond   %{HTTP_HOST} !ww2.zw3b.blog$ [NC]
# ET si le host est différent de WW3
#RewriteCond   %{HTTP_HOST} !ww3.zw3b.blog$ [NC]
# ET si le l'hÎte est différent du domaine.
#RewriteCond   %{HTTP_HOST} !zw3b.blog$ [NC]
# J'envoie sur le nom sans les WWW en HTTPS
RewriteRule   ^(.*) https://zw3b.blog/$1 [R=301,L]

Puis
 çà aussi, çà fonctionne → « all » et « www » redirige vers https://zw3b.blog ET https://ww3.zw3b.blog pointe sur « ww3 » :star_struck:

# Si le port est différent de 443
RewriteCond   %{SERVER_PORT} !^443$ [OR]
# OU pour TOUS les hosts du domaine zw3b.blog
RewriteCond   %{HTTP_HOST} ^(.*).zw3b.blog$ [NC,OR]
# OU si le host est équivalent à WWW
RewriteCond   %{HTTP_HOST} ^www.zw3b.blog$ [NC]
# ET si le host est différent de WW1
#RewriteCond   %{HTTP_HOST} !ww1.zw3b.blog$ [NC]
# ET si le host est différent de WW2
#RewriteCond   %{HTTP_HOST} !ww2.zw3b.blog$ [NC]
# ET si le host est différent de WW3
RewriteCond   %{HTTP_HOST} !ww3.zw3b.blog$ [NC]
# ET si le l'hÎte est différent du domaine.
#RewriteCond   %{HTTP_HOST} !zw3b.blog$ [NC]
# J'envoie sur le nom sans les WWW en HTTPS
RewriteRule   ^(.*) https://zw3b.blog/$1 [R=301,L]

OK c’est bon dirais-je !


Solutions :

J’ai supprimĂ© la derniĂšre ligne, donc çà, çà fonctionne, sujet rĂ©solu :

HTTP | HTTPS :// « TOUT et N’IMPORTE QUOI » « . » domain.tld : https://all.zw3b.blog → pointe sur → https://zw3b.blog
HTTP | HTTPS :// « www. » domain.tld → pointe sur → https://zw3b.blog
HTTP | HTTPS :// « ww1. » domain.tld → pointe sur → https://ww1.zw3b.blog
HTTP | HTTPS :// « ww2. » domain.tld → pointe sur → https://ww2.zw3b.blog
HTTP | HTTPS :// « ww3. » domain.tld → pointe sur → https://ww3.zw3b.blog

OK !

# Si le port est différent de 443
RewriteCond   %{SERVER_PORT} !^443$ [OR]
# OU pour TOUS les hosts du domaine zw3b.blog
RewriteCond   %{HTTP_HOST} ^(.*).zw3b.blog$ [NC,OR]
# OU si le host est équivalent à WWW
RewriteCond   %{HTTP_HOST} ^www.zw3b.blog$ [NC]
# ET si le host est différent de WW1
RewriteCond   %{HTTP_HOST} !ww1.zw3b.blog$ [NC]
# ET si le host est différent de WW2
RewriteCond   %{HTTP_HOST} !ww2.zw3b.blog$ [NC]
# ET si le host est différent de WW3
RewriteCond   %{HTTP_HOST} !ww3.zw3b.blog$ [NC]
# ET si le l'hÎte est différent du domaine.
#RewriteCond   %{HTTP_HOST} !zw3b.blog$ [NC]
# J'envoie sur le nom sans les WWW en HTTPS
RewriteRule   ^(.*) https://zw3b.blog/$1 [R=301,L]

Bon j’ai appliquĂ© çà sur « http://zw3b.eu » :cowboy_hat_face: pour la peine et sur « http://www.zw3b.tv » (y’a pas de wilcard sur mon « .tv » dans le certificat SSL/TLS Let’s Encrypt.


Je vous ajoute çà aussi, çà fonctionne celle-ci → TOUT redirige vers « www » sauf « ww1 » et « ww2 » et « ww3 » :wink:

OK !

# Si le port est différent de 443
RewriteCond   %{SERVER_PORT} !^443$ [OR]
# OU pour TOUS les hosts du domaine zw3b.com
RewriteCond   %{HTTP_HOST} ^(.*).zw3b.com$ [NC,OR]
# OU si le host est équivalent au DOMAIN
RewriteCond   %{HTTP_HOST} ^zw3b.com$ [NC]
# ET si le host est différent de WWW
RewriteCond   %{HTTP_HOST} !www.zw3b.com$ [NC]
# ET si le host est différent de WW1
RewriteCond   %{HTTP_HOST} !ww1.zw3b.com$ [NC]
# ET si le host est différent de WW2
RewriteCond   %{HTTP_HOST} !ww2.zw3b.com$ [NC]
# ET si le host est différent de WW3
RewriteCond   %{HTTP_HOST} !ww3.zw3b.com$ [NC]
# J'envoie sur le nom sans les WWW en HTTPS
RewriteRule   ^(.*) https://www.zw3b.com/$1 [R=301,L]

À propos de my ZW3B :-: The Web Communication : https://my.zw3b.com/about/ :relaxed:

:wink:


Pour infos sur la configuration DNS et Apache


Wilcard « * » sur un CNAME « web » - config IPv4 et IPv6 :

root@srv.ca.lab3w.com:~ #  host my.zw3b.com
my.zw3b.com is an alias for web.zw3b.com.
web.zw3b.com has address 158.69.126.137
web.zw3b.com has IPv6 address 2607:5300:60:9389::1

Ici, sur le port 80 HTTP je redirige vers le port HTTPS 443.

En fait selon les RFC du « Strict-Transport-Security » pour serveurs Web (/etc/apache2/conf-enabled/security.conf), il faut rediriger de cette façon :

  • http://example.nl ⇒ https://example.nl ⇒ https://www.example.nl
  • http://www.example.nl ⇒ https://www.example.nl

Source : internet.nl > Test your website - Result : Secure connection (HTTPS) - HTTPS Redirect

Configuration d’Apache (c’est) un « frontal », peut importe - je ne vous met pas toute la configuration du VH SSL :

<VirtualHost [2607:5300:60:9389::1]:80 158.69.126.137:80>

        ServerName www.zw3b.com
        ServerAlias zw3b.com
        ServerAlias ww1.zw3b.com ww2.zw3b.com
        ServerAlias ww3.zw3b.com
        ServerAlias *.zw3b.com

        # REWRITE -----------------------------------------
        RewriteEngine On

        RewriteCond %{HTTP_HOST} !^zw3b\.com$ [NC,OR]
        RewriteCond %{HTTP_HOST} ^zw3b\.com$ [NC]
        RewriteRule ^(.*) http://www.%{HTTP_HOST}/%1 [R=301,L]

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

</VirtualHost>

Ci-dessus, j’ai dĂ» me tromper :face_with_raised_eyebrow:

<IfModule mod_ssl.c>
<VirtualHost [2607:5300:60:9389::1]:443 158.69.126.137:443>

        ServerName www.zw3b.com
        ServerAlias zw3b.com
        ServerAlias ww1.zw3b.com ww2.zw3b.com
        ServerAlias ww3.zw3b.com
        ServerAlias *.zw3b.com

[...]
</VirtualHost>
</IfModule>

Fichier /etc/apache2/conf-enabled/security.conf configuration « Strict-Transport-Security » d’Apache.

# 86400 1 day
# 604800 1 week
# 2592000 1 month
# 31536000 1 year min
# 63072000 2 years
# https://www.justegeek.fr/activer-len-tete-hsts-sur-apache-pour-proteger-son-site-web/
# Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains;"

Si çà peut aider :wink:

:wink: