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

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.


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é.


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/

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/

12
Cela ne fera PAS ce que Jardel veut. Il redirigera TOUTES les pages plutôt que la racine.
Sharoz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.