Виртуальные хосты apache и редирект

Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

У нас имеется уже установленный веб сервер, то есть фактически все настройки по умолчанию. Используя эти параметры мы можем прописать "нормально" только один сайт, а необходимые  сервисы будут доступны только через алиасы. Например (http://example.com/phpmyadmin), то есть для каждого нового сервиса  придется вводить "http://наш домен/новый сервис", а нам это не удобно, вот как раз это проблему решают виртуальные хосты.

Условия:

Первый сайт - example.com (это пример, используйте свой)

Второй сайт - domain.org

IP сервера (внешний) - 95.102.4.11 (пример!)

IP внутренний (нашего веб сервера) - 192.168.2.10 (пример!)

Установленные сервисы:

owncloud - cloud.example.com:443 и cloud.example.com:80

phpmyadmin - phpmyadmin.loc:9090

zabbix - zabbix.loc:8080

Приступаем к настройке.

Редактируем httpd.conf

nano /usr/local/etc/apche24/httpd.conf

находим строчку

# Virtual hosts
#Include etc/apache24/extra/httpd-vhosts.conf

Расскомментируем. Получим

# Virtual hosts
Include etc/apache24/extra/httpd-vhosts.conf

 Сохраняем и зыкрываем.

Редактируем httpd-vhosts.conf

nano /usr/local/etc/apache24/extra/httpd-vhosts.conf

Прописываем наши домены. Количество не ограничено.

#example.com

<VirtualHost *:80>
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot "/web/sites/example/www/"
ServerName example.com
ServerAlias www.example.com
ErrorLog "/web/sites/example/logs/error-http.log"
CustomLog "/web/sites/example/logs/access-http.log" common
</VirtualHost>

<Directory /web/sites/example/www/>
  Options +FollowSymlinks
  AllowOverride All
  Order Deny,ALLow
  Require all granted
</Directory>

#domain.org

<VirtualHost *:80>
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot "/web/sites/domain/www/"
ServerName domain.org
ServerAlias www.domain.org
ErrorLog "/web/sites/domain/logs/error-http.log"
CustomLog "/web/sites/domain/logs/access-http.log" common
</VirtualHost>

<Directory /web/sites/domain/www/>
  Options +FollowSymlinks
  AllowOverride All
  Order Deny,ALLow
  Require all granted
</Directory>

#Services WAN

#owncloud

<VirtualHost *:80>
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot "/usr/local/etc/owncloud/"
ServerName cloud.example.com
ServerAlias www.cloud.example.com
ErrorLog "/usr/local/etc/owncloud/logs/error-http.log"
CustomLog "/usr/local/etc/owncloud/logs/access-http.log" common
</VirtualHost>

<VirtualHost *:443>
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot "/usr/local/etc/owncloud/"
ServerName cloud.example.com
ServerAlias www.cloud.example.com
ErrorLog "/usr/local/etc/owncloud/logs/error-http-ssl.log"
CustomLog "/usr/local/etc/owncloud/logs/access-http-ssl.log" common
</VirtualHost>

<Directory /usr/local/etc/owncloud/>
  Options +FollowSymlinks
  AllowOverride All
  Order Deny,ALLow
  Require all granted
</Directory>

#Services LAN

#zabbix

<VirtualHost *:8080>
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot "/web/sites/zabbix/www/"
ServerName zabbix.loc
ServerAlias www.zabbix.loc
ErrorLog "/web/sites/zabbix/logs/error-http.log"
CustomLog "/web/sites/zabbix/logs/access-http.log" common
</VirtualHost>

<Directory /web/sites/zabbix/www/>
  Options +FollowSymlinks
  AllowOverride All
  Order Deny,ALLow
  Require all granted
</Directory>

 #phpmyadmin

<VirtualHost *:9090>
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot "/usr/local/etc/phpmyadmin/"
ServerName phpmyadmin.loc
ServerAlias www.phpmyadmin.loc
ErrorLog "/usr/local/etc/phpmyadmin/logs/error-http.log"
CustomLog "/usr/local/etc/phpmyadmin/logs/access-http.log" common
</VirtualHost>

<Directory /usr/local/etc/phpmyadmin/>
  Options +FollowSymlinks
  AllowOverride All
  Order Deny,ALLow
  Require all granted
</Directory>

Сохраняем. И перезапускаем apache

service apache24 restart

 

Редирект

Для включения перенаправления средствами Apache, достаточно чтобы модуль mod_rewrite.so был загружен в Apache.

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Для того ,чтобы директивы mod_rewrite можно было использовать в .htaccess, надо в конфигурационном файле Apache, в соответствующем разделе "<Directory /путь/до/директории>" прописать:
AllowOverride all

Правила Redirect

Если нужно сделать несколько редиректов, то каждый новый редирект нужно написать с новой строки.

Redirect 301 /old-page.html http://new-domain.ru/new-page.html

или

Redirect permanent /page.html http://example.com/new-page.html

Для перенаправления всех запросов на другой сайт вы можете использовать следующую конструкцию:

Redirect 301 / http://example.com/

или

Redirect permanent / http://example.com/

RewriteRule

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

Рассмотрим самые распространённые варианты её использования.

Редирект с www на без www

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Или более понятный синтаксис

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

Вы можете использовать любой.

Редирект с без www на www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] 

Альтернатива:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Перенаправление домена с https на http

Для того, чтобы данное перенаправление работало, должен использоваться только Web-сервер Apache.

RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Перенаправление домена с http на https

Для того, чтобы данное перенаправление работало, должен использоваться только Web-сервер Apache.

RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]


игри для девачак

Добавить комментарий

Защитный код
Обновить