Как перенаправить root и только root через htaccess?

53

Я хочу перенаправить только мой root на другой URL, но поддерживаю все каталоги / sub /, где они принадлежат (и перенаправляют)

пример:

mysite.com/1 перенаправляет куда-то mysite.com/admin открывает страницу

я хочу, чтобы mysite.com/ перенаправлял на mysecondsite.com и только это с 301 редиректом с использованием htaccess


источник

Ответы:

75

Попробуй это:

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

Если вам не нужно проверять старый домен (например, если каталог, в котором находится ваш .htaccess, используется только старым доменом), вы можете удалить вторую строку.

Родриго Сийру
источник
1
В моем случае мне нужно было перенаправить трафик на mysite.com/, но не на foo.mysite.com, поэтому пришлось добавить регулярное выражение в строку 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]чтобы убедиться, что это совпадение с точным хостом
jaygooby
Более эффективно проверять URL-путь в RewriteRule шаблоне (как в ответе @ DaveForgac), а не использовать дополнительное условие для проверки REQUEST_URIсерверной переменной.
MrWhite
38

Если вы имеете в виду, что вы хотите перенаправить «/» на другой домен, это будет работать:

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

Это соответствует только корню домена, но после него ничего не происходит, поэтому он будет перенаправлять только имя домена без указания имени файла.

Дейв Форгак
источник
Небольшое изменение сработало для меня. Добавленный в конец моего htaccess, после того, как все другие правила были вызваны, я просто хотел сделать страницу приветствия для любого, кто посещает мой корневой домен (без какого-либо поддоменов): RewriteCond% {HTTP_HOST}! ^ (Subdomain1 | subdomain2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack
15

Это должно работать просто отлично:

RedirectMatch 301 ^/$ https://example.com/
stefanbc
источник
2
Это было бы предпочтительным (к существующим ответам), если вы еще не используете mod_rewrite для других перенаправлений.
MrWhite
-3

Более короткое решение:

Redirect 301 / http://mysecondsite.com/
minipark
источник
12
Это не будет делать то, что хочет Джардел. Это перенаправит ВСЕ страницы, а не только корень.
Шароз