Sometimes you want to host multiple sites in a single virtual Scotch Box public_html folder, or any other Vagrant+VirtualBox setup.
Say you have a folder called drupal in public_html, you can always access the web site via http://192.168.33.10/drupal, but this is not optimal, for example for paths to images, if they rely on starting the path from root.
A possible solution is adding an extra Virtual Host to your Scotch Box.
Open your /etc/hosts file on your own machine (not Scotch Box) with
sudo vi /etc/hosts
... and add this
192.168.33.10 dev_site.local
This will make your browser ask Scotch Box, which is at 192.168.33.10, for dev_site.local.
On Scotch Box, open the default Virtual host file for Apache, 000-default.conf
sudo vi /etc/apache2/sites-available/000-default.conf
... assuming your site is in /var/www/public/dev_site, add this below the existing entry
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/public/d7.local
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName d7.local
<Directory "/var/www/public/d7.local">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
This tells Scotch to guide requests for dev_site.local to the folder /var/www/public/dev_site.
Restart the Apache server to make the update take effect.
sudo systemctl restart apache2.service
If you are using Drupal, add this to your settings.php file:
$base_url = 'http://dev_site.local';
clear cache and generate a one-time log-in link
drush cc all drush uli
You should now be able to access your site at http://d7.local
To automate, you can copy paste this into your terminal:
sudo -i
echo "
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/public/d7.local
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName d7.local
<Directory "/var/www/public/d7.local">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
" >> /etc/apache2/sites-available/000-default.conf
systemctl restart apache2.service
exit