Je veux rediriger demo.example.com
vers example.com/my-demo
. C'est ma règle de réécriture, mais je ne parviens pas à la faire fonctionner sur mon serveur de production:
RewriteCond %{HTTP_Host} ^demo\.example\.com
RewriteRule ^(.*)$ /my-demo/$1 [R=301,L]
Dans l'état actuel des choses, vous redirigez vers le même hôte. c'est à dire. demo.example.com/file
est redirigé vers demo.example.com/my-demo/file
et non pas example.com/my-demo/file
, ce qui entraînera une boucle de redirection. Vous devez spécifier une URL absolue dans la substitution RewriteRule
:
RewriteEngine On
RewriteCond %{HTTP_Host} =demo.example.com
RewriteRule ^(.*)$ http://example.com/my-demo/$1 [R=301,L]
mettez ceci dans le fichier .htaccess
dans votre répertoire demo.example.com:
RewriteEngine On RewriteCond% {HTTP_Host} ^ demo\.example\.com [NC] RewriteRule (. *) Http://example.com/demo/$1 [ L, R = 301]
i.e: demo.example.com est dans le dossier root-folder/demo
place ce fichier .htaccess
sur un dossier démo, pas sur dossier racine.
j'espère que ce travail pour vous.
Avez-vous un ServerAlias demo.example.com
pour le VirtualHost qui a ceci RewriteRule
? Si vous ne le faites pas, c'est la raison pour laquelle cela ne fonctionne pas.
S'il ne s'agit pas d'un ServerAlias mais d'un sous-domaine, n'oubliez pas de placer votre fichier .htaccess dans le sous-domaine, pas dans le répertoire du domaine principal. Ajoutez également "RewriteEngine On" dans .htaccess si vous ne l'avez pas encore fait.