# Rewrite Server Web Apache 😆

**URL:** <https://www.debian-fr.org/t/rewrite-server-web-apache/90834>\
**Category:** Support Debian\
**Tags:** apache\
**Created:** [Janvier 19, 2025, 3:57 UTC](https://www.debian-fr.org/t/rewrite-server-web-apache/90834 "2025-01-19T03:57:05Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 19, 2025, 5:49 UTC](https://www.debian-fr.org/t/rewrite-server-web-apache/90834/2 "2025-01-19T05:49:16Z")

</div>

J’ai trouvé ❤

```auto
# 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](https://ww3.zw3b.blog/clocks.php?ABC)

* * *

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

**En fait, çà ne «&nbsp;rewrite&nbsp;» plus** → [https://test.zw3b.blog](https://test.zw3b.blog) ← pointe sur mon «&nbsp;blog&nbsp;», MAIS en gardant l’adresse «&nbsp;test.zw3b.blog&nbsp;» au lieu de «&nbsp;zw3b.blog&nbsp;» comme je l’ai demandé dans le «&nbsp;rewrite&nbsp;».

🤔

* * *

Bon, on va partir du début.

Çà, çà fonctionne HTTP | HTTPS :// «&nbsp;TOUT et N’IMPORTE QUOI&nbsp;» «&nbsp; **.** &nbsp;» domain.tld : [https://all.zw3b.blog](https://all.zw3b.blog) → pointe sur → [https://zw3b.blog](https://zw3b.blog)

```auto
# 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 → «&nbsp;all&nbsp;» et «&nbsp;www&nbsp;» redirige vers [https://zw3b.blog](https://zw3b.blog)

```auto
# 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 → «&nbsp;all&nbsp;» et «&nbsp;www&nbsp;» redirige vers [https://zw3b.blog](https://zw3b.blog) ET [https://ww3.zw3b.blog](https://ww3.zw3b.blog) pointe sur «&nbsp;ww3&nbsp;» 🤩

```auto
# 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 :// «&nbsp;TOUT et N’IMPORTE QUOI&nbsp;» «&nbsp; **.** &nbsp;» domain.tld : [https://all.zw3b.blog](https://all.zw3b.blog) → pointe sur → [https://zw3b.blog](https://zw3b.blog)  
HTTP | HTTPS :// «&nbsp; **www.** &nbsp;» domain.tld → pointe sur → [https://zw3b.blog](https://zw3b.blog)  
HTTP | HTTPS :// «&nbsp; **ww1.** &nbsp;» domain.tld → pointe sur → [https://ww1.zw3b.blog](https://ww1.zw3b.blog)  
HTTP | HTTPS :// «&nbsp; **ww2.** &nbsp;» domain.tld → pointe sur → [https://ww2.zw3b.blog](https://ww2.zw3b.blog)  
HTTP | HTTPS :// «&nbsp; **ww3.** &nbsp;» domain.tld → pointe sur → [https://ww3.zw3b.blog](https://ww3.zw3b.blog)

**OK !**

```auto
# 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 «&nbsp;[http://zw3b.eu](http://zw3b.eu)&nbsp;» 🤠 pour la peine et sur «&nbsp;[http://www.zw3b.tv](http://www.zw3b.tv)&nbsp;» (y’a pas de wilcard sur mon «&nbsp;.tv&nbsp;» dans le certificat SSL/TLS Let’s Encrypt.

* * *

Je vous ajoute **çà aussi, çà fonctionne** celle-ci → TOUT redirige vers «&nbsp;www&nbsp;» sauf «&nbsp;ww1&nbsp;» et «&nbsp;ww2&nbsp;» et «&nbsp;ww3&nbsp;» 😉

**OK !**

```auto
# 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 Com_munication : [https://my.zw3b.com/about/](https://my.zw3b.com/about/) 😌

😉

* * *

Pour infos sur la configuration DNS et Apache…

Wilcard «&nbsp;\*&nbsp;» sur un CNAME «&nbsp;web&nbsp;» - config IPv4 et IPv6 :

```auto
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 «&nbsp;Strict-Transport-Security&nbsp;» 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](https://internet.nl/) - Result : Secure connection (HTTPS) - HTTPS Redirect

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

```auto
<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 🤨

```auto
<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 «&nbsp;Strict-Transport-Security&nbsp;» d’Apache.

```auto
# 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 😉

😉

---

_[View the full topic](https://www.debian-fr.org/t/rewrite-server-web-apache/90834)._
