Перенаправление определенной страницы на другой домен

#.htaccess #mod-rewrite #http-status-code-301

#.htaccess #мод-перезапись #http-status-code-301

Вопрос:

Недавно я создал новый сайт в другом домене. Мне нужно перенаправить index.html индекс старого домена на индекс нового домена.

Обычно это не было бы проблемой, но старый домен является корневым доменом сервера, а новый — надстройкой. Таким образом, следующая строка вызовет цикл перенаправления, поскольку она перенаправляет a.com/index.html и b.com/index.html на b.com/index.html .

 Redirect 301 /index.html http://b.com/
  

Есть ли способ сделать что-то подобное?

 Redirect 301 http://a.com/index.html http://b.com/
  

TL; DR Как я могу перенаправить index.html с одного домена на другой домен без каскадирования и возникновения цикла, потому что другой домен является дополнительным доменом (т. Е. в той же папке, что и по закону того же самого .htaccess ).

Ответ №1:

Вы можете попробовать mod_rewrite для большей гибкости с помощью кода, подобного этому:

 Options  FollowSymlinks -MultiViews
RewriteEngine on

# for HTTP
RewriteCond %{HTTP_HOST} ^a.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(index.html)$ http://b.com/$1 [R=301,L,NC]

# for HTTPS
RewriteCond %{HTTP_HOST} ^a.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(index.html)$ https://b.com/$1 [R=301,L,NC]
  

Комментарии:

1. Выглядит многообещающе, хотя я получаю ошибку сервера при добавлении символических ссылок. Есть идеи, почему это может быть? Спасибо за вашу помощь до сих пор.

2. Не могли бы вы, пожалуйста, объяснить, какой тип символических ссылок вы создаете? Это символическая ссылка, которая у нас есть в системах * nix? Также вы можете также сообщить о соответствующей ошибке из вашего error.log, когда вы видите ошибку сервера в браузере.

3. Я имею в виду строку параметров в вашем примере. При включении опции следовать символическим ссылкам мой сервер просто умирает без полезной информации об ошибке. Без этого ничего не происходит.

4. Вам нужно будет сначала убедиться, что .htaccess включен в вашей конфигурации Apache, в противном случае этот код игнорируется Apache.

5. Хорошо, мне удалось исправить это с помощью этого, любые другие команды игнорируются. RewriteEngine на RewriteCond %{HTTP_HOST} ^a.co.uk $ [NC] RewriteRule ^index.html $ b.co.uk [L]

Ответ №2:

ПЕРЕНАПРАВЛЕНИЕ JAVASCRIPT:

Вставьте это в верхней части вашей страницы на старом сайте сразу после <head> тега.

 <script type="text/javascript">
window.location = "http://www.newsite.com/"
</script>
  

Естественно, вы бы заменили «http://www.newsite.com /» с тем местом, на которое вы хотели перенаправить страницу.

Он должен перенаправить вас мгновенно. Таким образом, любой, кто посещает страницу старого сайта, мгновенно перенаправит на newsite.com

ПЕРЕНАПРАВЛЕНИЕ PHP (301, постоянно перемещено):

 <?
Header( "HTTP/1.1 301 Moved Permanently" ); 
Header( "Location: http://www.newsite.com/" ); 
?>
  

Разместите это в верхней части вашей страницы. Это не так приятно, как javascript, но оптимизировано для SEO, что, я думаю, вы ищете.

Комментарии:

1. Да, я уверен, что это сработало бы, но мне нужно, чтобы это было перенаправление 301.

2. Я обновил свой ответ, включив удобный для поисковой системы метод перенаправления, установив заголовки с помощью php.

3. Я использовал метод .htaccess, ваш второй ответ был ближе, но я перенаправляю html-файл на PHP, который не будет проанализирован. В любом случае спасибо.