Comment rediriger root et uniquement root via htaccess?

53

Je veux rediriger uniquement ma racine vers une autre URL, mais je conserve tous les répertoires / sub / auxquels ils appartiennent (et redirigeons)

exemple:

mysite.com/1 redirige quelque part mysite.com/admin ouvre une page

je veux que mysite.com/ redirige vers mysecondsite.com et uniquement avec une redirection 301 utilisant htaccess


la source

Réponses:

75

Essaye ça:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

Si vous n'avez pas besoin de rechercher l'ancien domaine (par exemple, si le répertoire dans lequel votre fichier .htaccess est placé n'est utilisé que par l'ancien domaine), vous pouvez supprimer la deuxième ligne.

Rodrigo Sieiro
la source
1
Dans mon cas, je devais rediriger le trafic vers mysite.com/ mais pas foo.mysite.com, donc je devais ajouter une regex à la ligne 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]pour garantir que le match était pour l'hôte exact
jaygooby le
Il est plus efficace de vérifier le chemin d’URL dans le RewriteRule modèle (comme dans la réponse de @ DaveForgac), au lieu d’utiliser une condition supplémentaire pour vérifier la REQUEST_URIvariable serveur.
MrWhite
38

Si vous voulez uniquement rediriger "/" vers un autre domaine, cela fonctionnera:

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

Cela ne fait que correspondre à la racine du domaine avec rien après; il ne fera donc que rediriger le nom de domaine sans qu'un nom de fichier ne soit spécifié.

Dave Forgac
la source
Une légère variation a fonctionné pour moi. Ajoutée au bas de mon htaccess, après toutes les autres règles invoquées, je voulais simplement rendre une page de bienvenue à toute personne visitant mon domaine racine (sans aucun sous-domaine): RewriteCond% {HTTP_HOST}! ^ (Subdomain1 | subdomain2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack
15

Cela devrait fonctionner très bien:

RedirectMatch 301 ^/$ https://example.com/
Stefanbc
la source
2
Cela serait préférable (aux réponses existantes) si vous n'utilisez pas déjà mod_rewrite pour d'autres redirections.
MrWhite
-3

Une solution plus courte:

Redirect 301 / http://mysecondsite.com/
miniparc
la source
12
Cela ne fera PAS ce que Jardel veut. Il redirigera TOUTES les pages plutôt que la racine.
Sharoz