Est-il possible de configurer un domaine (http://x.com
) (DNS/.htaccess/else?) À rediriger vers un autre domaine (http://y.com
), alors que si vous naviguez http://x.com/subdir/index.html
, vous ' d voyez les fichiers dans le sous-répertoire de http://x.com
?
résumé
comment:x.com -> y.com
(redirection)x.com/sub/index.html
-> x.com/sub/index.html
(pas de redirection)
tilisation du cas
J'ai sanderschaeffer.nl
et iscs.nl
, qui sont tous deux mes noms commerciaux. L'un est mon nom personnel, l'autre mon nom de marque. Lorsqu'un utilisateur accède à sanderschaeffer.nl
, le domaine doit être transféré (301) vers iscs.nl
. Cependant, quand on tape (par exemple) sanderschaeffer.nl/clientTestSite/
il resterait à cet endroit. Ainsi, seul le niveau supérieur obtient une redirection 301, mais taper dans le domaine supérieur, y compris un sous-répertoire, n'entraînera aucune redirection .
Pour quelqu'un qui dit 'Pourquoi n'utilisez-vous pas les sites de test dans un sous-répertoire du site principal (iscs.nl/
)?'; c'est parce que je teste (temporairement) un nouveau serveur sur lequel sanderschaeffer.nl
est actuellement hébergé. :)
En supposant que vous vouliez dire "sous-répertoire" et non pas "sous-domaine" (selon vos exemples), essayez alors quelque chose de similaire dans le fichier .htaccess à l'adresse x.com
:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sub/
RewriteRule (.*) http://y.com/$1 [R=301,L]
Redirige (301) le tout vers y.com
où l'URI ne commence pas avec /sub/
.
Notez que ceci redirige vers l'URL correspondante sous y.com
, ainsi, par exemple, http://x.com/foo/bar
redirige vers http://y.com/foo/bar
. (Plutôt que de rediriger littéralement uniquement x.com/
vers y.com/
?)
PDATE # 1: À la lumière des commentaires ci-dessous, ce qui suit pourrait suffire. Cela redirige http://x.com/
(et uniquement l'URL racine) vers y.com
. Tout le reste, par exemple. x.com/something
reste à x.com
.
RewriteEngine On
RewriteRule ^$ http://y.com/ [R=301,L]
Notez cependant que cela ne vérifie pas spécifiquement la présence d'un sous-répertoire valide . Tout composant de chemin dans l'URL restera dans l'URL x.com
.
Si vous avez spécifiquement besoin de vérifier les sous-répertoires valides/connus, j'utilise une directive RewriteCond
comme dans le premier exemple ci-dessus.
PDATE # 2: Une autre possibilité est de vérifier tout ce qui ressemble à un sous-répertoire, c'est-à-dire. /anything/
et redirige sinon. Par exemple:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/[a-z0-9_-]+/
RewriteRule (.*) http://y.com/$1 [R=301,L]
Ceci redirigera x.com/
vers y.com/
et x.com/file
vers y.com/file
, mais ne redirigera pas x.com/subdir/file.php
.