Как перенаправить 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/

2
Это было бы предпочтительным (к существующим ответам), если вы еще не используете mod_rewrite для других перенаправлений.
MrWhite

-3

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

Redirect 301 / http://mysecondsite.com/

12
Это не будет делать то, что хочет Джардел. Это перенаправит ВСЕ страницы, а не только корень.
Шароз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.