Назад | Перейти на главную страницу

Как перенаправить sub.domain.com на www.domain.com/dir/page.html?

У меня старый сервер данных (data.example.com), который был заменен NAS, и общие ресурсы NAS теперь монтируются на веб-сервере (www.example.com).

Итак, теперь старый сервер удален и я сделал "CNAME" в нашем DNS, чтобы указать на наш веб-сервер и поскольку наши пути совпадают на старом сервере данных и на веб-сервере, страницы связываются правильно, т.е. "data.example.com/datafolder1" перенаправляет на "www.example.com/datafolder1", как и должно.

Но как я могу сделать так, чтобы data.example.com перенаправлялся на www.example.com/dir/page.html что есть информация о том, что старый сервер был удален и ссылки на актуальные папки данных?

Вот эти конфиги:

Bind9: example.hosts

data.example.com.         IN      CNAME   www.example.com.

Apache: www.example.com.conf

<VirtualHost *:80>
  ServerName data.example.com
  
  # 301 --- data.example.com => www.example.com/Info/dataserver.html
  RewriteRule ^data\.example\.com$ /www.example.com/Info/dataserver.html? [L,R=301]

  LogLevel warn rewrite:trace3
  ErrorLog  /var/log/apache2/error-data.example.com.log
  CustomLog /var/log/apache2/access-data.example.com.log combined
</VirtualHost>

<VirtualHost serverip:80>
  ServerName www.example.com
  ServerAlias example.com
  ServerAdmin webmaster@example.com

  # Redirecting all http > https
  Redirect permanent / https://www.example.com/

  LogLevel error rewrite:trace3
  ErrorLog  /var/log/apache2/error-example.com.log
  CustomLog /var/log/apache2/access-example.com.log combined
</VirtualHost>

<VirtualHost *:443>
  ServerName www.example.com
  ServerAlias example.com
  DocumentRoot /var/www/www.example.com/htdocs/

  SSLEngine on
  etc........

В текущей конфигурации data.example.com перенаправляется на www.example.com домашняя страница не та www.example.com/dir/page.html как бы я этого хотел.

<VirtualHost *:80>
  ServerName data.example.com
  
  # 301 --- data.example.com => www.example.com/Info/dataserver.html
  RewriteRule ^data\.example\.com$ /www.example.com/Info/dataserver.html? [L,R=301]

Предположительно это перенаправить ваша "попытка" перенаправить http://data.example.com/ к http://www.example.com/dir/page.html - согласно тексту вашего вопроса (хотя, предположительно, это должно быть https://).

На самом деле это перенаправление - перенаправление http://data.example.com/data.example.com к http://data.example.com/www.example.com/Info/dataserver.html - возможно, это не твое намерение.

Перенаправить http://data.example.com/ (только корень документа) в https://www.example.com/dir/page.html вы должны изменить выше RewriteRule на следующее (здесь нет необходимости в mod_rewrite):

RedirectMatch 301 ^/$ https://www.example.com/dir/page.html

Перенаправить http://data.example.com/<anything> затем измените приведенное выше, чтобы читать:

RedirectMatch 301 ^ https://www.example.com/dir/page.html

Вам необходимо перезапустить веб-сервер, чтобы изменения вступили в силу.