Проблемы с перенаправлением старого домена на новый с Apache и htaccess - PullRequest
0 голосов
/ 27 июня 2009

Моя домашняя страница находится по адресу www.nazgulled.net, и я купил новый домен www.ricardoamaral.net. Оба этих домена указывают на один и тот же сервер.

У меня две проблемы с перенаправлением, мой текущий код такой:

RewriteCond %{HTTP_HOST} ^(www\.)?nazgulled\.net [NC]
RewriteRule ^(.*)$ http://www.ricardoamaral.net/$1 [L]

Пока я просто тестирую, но идея в том, чтобы заменить [L] на [L, R = 301], когда я буду готов переместить все это, просто чтобы вы знали.

В любом случае ...

1) Это не работает, когда я пробую это, я не могу получить доступ к "nazgulled.net", это дает мне "внутреннюю ошибку сервера", и я не понимаю, почему .. Я не понимаю почему, потому что если заменить "ricardoamaral.net" на "google.com", перенаправление будет работать нормально: /

2) У меня есть несколько поддоменов, и я бы тоже хотел перенаправить все в них. Мой первый выбор - добавить различные условия / правила перезаписи для каждого из поддоменов, но для этого требуется много ручного кода, и если пользователь вводит какой-то поддомен, который не существует, он не перенаправляет его, и я тоже этого хочу.

Ответы [ 3 ]

3 голосов
/ 09 сентября 2012

Я думаю, что для вашей ситуации создание отдельных vhosts было бы идеальным решением. Я часто размещаю домены, которые перенаправляются, например, на один и тот же сервер, но в другую папку, чтобы поддерживать чистоту папки www. Мой основной сайт будет здесь:

/var/www/example.com/public

Для всех моих перенаправлений я бы разместил их так:

/var/www/redirects/example-2.com/public

В каждой общедоступной папке перенаправленных сайтов вы добавляете эту строку в ваш файл .htaccess

RedirectMatch permanent /.* http://example.com/
2 голосов
/ 27 июня 2009

Для 1 вы можете использовать что-то вроде этого:

<VirtualHost *:80>
  ServerAdmin webmaster@nazgulled.net
  ServerName nazgulled.net
  ServerAlias www.nazgulled.net
  Redirect permanent / http://www.ricardoamaral.net/
</VirtualHost>

Я использую аналогичную конфигурацию, и она отлично работает, сохраняя параметры запроса, пути и т. Д.

Что касается вашего собственного правила перезаписи, хочу отметить, что вы можете потерять параметры запроса, если вы не включите QSA.

Чтобы диагностировать внутренние ошибки сервера, просто взгляните на файл журнала, предоставленный вашей директивой ErrorLog в вашем vhost, или глобальный, в зависимости от вашей конфигурации. Должна быть указана точная причина ошибки.

0 голосов
/ 23 октября 2013

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

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://new-domain.com/$1 [R=301,L]
...