[EDIT] Comme j'ai testé la solution. Elle fonctionne maintenant comme un rêve comme détaillé ci-dessous. J'avais fait une erreur stupide dans mon regex qui est maintenant corrigée.
L'idée est d'utiliser RewriteCond afin de capturer le fqdn dans la requête et de le diviser. La regex capture la partie la plus à gauche du nom de domaine qui est ensuite référencée dans la RewriteRule en utilisant %1. J'échappe également le public de la traduction, ce qui le rend accessible à l'aide d'un chemin URI commun à tous les fqdn:s mappés sur le site (voir le résultat du test pour un exemple concret).
- J'ai désactivé le fichier d'hôtes virtuels pour les besoins de cette expérience.
- Mes points dns client1.multisite.dev y client2.multisite.dev sur mon serveur de test Apache 2.2.
- Le bout de phrase suivant se trouve dans mon httpd.conf.
.
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond ${lowercase:%{HTTP_HOST}} ^([^.]+)\.multisite\.dev$
RewriteRule ^/(.*) /myApache/runtime/docs/www/multisite/%1/$1
J'ai créé cette structure de répertoire.
/myApache/runtime/docs/www/multisite/client1/uploads
/myApache/runtime/docs/www/multisite/client2/uploads
/myApache/runtime/docs/www/multisite/public
Chaque répertoire a un fichier séparé appelé index.htm. Le contenu du fichier index.htm révèle le chemin du répertoire où il est placé.
Surfer pour http://client1.multisite.dev/public/index.htm OU à http://client2.multisite.dev/public/index.htm donne ce résultat :
Hi!
Served from /myApache/runtime/docs/www/multisite/public/index.htm
See you!
Surfer pour http://client1.multisite.dev/uploads/index.htm donne ce résultat :
Hi!
Served from /myApache/runtime/docs/www/multisite/client1/uploads/index.htm
See you!
Surfer pour http://client2.multisite.dev/uploads/index.htm donne ce résultat :
Hi!
Served from /myApache/runtime/docs/www/multisite/client2/uploads/index.htm
See you!
J'ai également testé le mélange des cas en entrant l'URL dans mon navigateur web. Tout est traduit en minuscules.
Je note que vous exécutez Apache sous Windows, dont les systèmes de fichiers natifs sont insensibles à la casse. La normalisation de la casse n'est donc pas nécessaire, bien que je trouve personnellement les URL en minuscules plus agréables à regarder dans mon navigateur. Sur les systèmes de fichiers qui sont sensibles à la casse, la normalisation serait une exigence, donc je l'inclus pour compléter.
Enfin, j'ai également noté que l'exécution d'Apache sur un port autre que 80 (c'est-à-dire qu'il faut l'indiquer dans l'url) rompt la référence inverse de RewriteRule. Je n'ai cependant pas cherché de solution à ce problème.
J'espère que cela correspond ou s'approche suffisamment de ce dont vous avez besoin.
1 votes
Je pense que cela est possible en utilisant mod_rewrite pour atteindre la partie sous-domaine. AFAIK alias y aliasmatch ne se préoccupent que de l'URI.
0 votes
Pensez-vous que cela pourrait vous guider ? -> kingcoda.com/how-to-create-wildcard-dns-for-custom-subdomains