Конфигурация Apache для статического сайта проста (я исключил стандартные нерелевантные строки)
<VirtualHost *:80>
ServerName foo.example.edu
DocumentRoot /var/www/foo.example.edu
</VirtualHost>
Перенаправление bar.example.edu может соответствовать рекомендациям apache для перенаправления ssl . Я бы использовал встроенное перенаправление, поскольку в этом простом случае использования mod_rewrite не требуется.
<VirtualHost *:80>
ServerName bar.example.edu
Redirect permanent / https://bar.example.edu/
</VirtualHost>
А для перенаправления на Heroku я бы использовал mod_proxy_http для перенаправления. Зашифрованный виртуальный хост может быть чем-то вроде
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Deny from none
</Proxy>
ProxyVia On
<VirtualHost *:443>
ServerName bar.example.edu
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
ProxyPass / https://bar-example-edu.herokuapp.com/
ProxyPassReverse / https://bar-example-edu.herokuapp.com/
ProxyPassReverseCookieDomain / https://bar-example-edu.herokuapp.com/
</VirtualHost>
На стороне Heroku в исходном коде приложения вы должны создать приложение с:
heroku create bar-example-edu
И настроить их надстройку Custom Domain с помощью
heroku domains:add bar.example.edu
Немного адаптировано из раздела документа, который я написал о проксировании в Heroku.
Предполагая, что у вас уже есть вся необходимая директива VirtualHost Apache, вам в основном нужно добавить следующие директивы VirtualHost для порта 80 и порта 443 для bar.example.com ... (выберите одно или другое)
ВАРИАНТ 1. Правило перезаписи Поскольку вы указали, что ищете правило перезаписи, я опубликую его, но, как указано в ссылке ниже, это не лучший способ сделать это.
RewriteEngine on
RewriteRule ^(.*)$ https://bar-example-edu.herokuapp.com/$1 [P]
СПРАВОЧНИК: http: // httpd. apache.org/docs/current/rewrite/flags.html#flag_p
ВАРИАНТ 2: напрямую использовать mod_proxy
ProxyPass / https://bar-example-edu.herokuapp.com/
ProxyPassReverse / https://bar-example-edu.herokuapp.com/
ССЫЛКА: http://httpd.apache.org/docs/current/mod/mod_proxy. html # proxypass
... кстати, учитывая, что приложение heroku использует https (SSL), вам, вероятно, следует просто поместить конфигурацию прокси в директиву VirtualHost порта 443 (ssl) и указать следующую строку в порт 80 VirtualHost:
Redirect / https://bar.example.edu/
... который должен направлять ваших посетителей на https перед их запуском.