Yes, this is possible. I did something similar, until I realized that subdomains really ain't that great (for me) and a first-level route is better. Anyways, in your apache configuration you'd do something like this for every "main" subdomain:
<VirtualHost *:80>
ServerName staging.sitename.com
DocumentRoot /var/www/staging/public
ServerAlias *.staging.sitename.com
SetEnv MY_LARAVEL_ENV "staging"
<Directory /var/www/staging/public>
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>
</VirtualHost>
Then at the top of your route file, you can grab the environment you set with apache above. Something like this for different main domains:
if (App::environment() == 'staging')
{
$domain = 'staging.sitename.com';
}
elseif (App::environment() == 'live')
{
$domain = 'sitename.com';
}
Route::group(array('domain' => '{company}.'.$domain), function()
{
/* put your routes here */
Route::get('/', 'YourController@getCompany');
});
Thanks. I also have a local environment set up, with the form sitename.localhost.com. Unfortunately, I have to do php artisan serve to run the app properly and then I access it with localhost:8000. When I try to route like test.localhost:8000, it fails. Any ideas for getting around this? How did you handle local development? Thanks!
For local development, you need a set of hostnames that point to the local host. You can set them up for just yourself, with edits to /etc/hosts
on a unix/mac system, or to C:\Windows\System32\Drivers\etc\hosts
on Windows. You can just make a list:
127.0.0.1 localhost thing.localhost thing2.localhost
, or even use any arbitrary names (even ones you don't control, this is just changing your computer's view)
You can also do this in DNS — on any domain name you can add records like so:
thing1.local IN A 127.0.0.1
thing2.local IN A 127.0.0.1
thing3.local IN A 127.0.0.1
And then access thing1.local.example.org
if you did this for the example.org
domain.
It's best to use something that's at least three parts (separated by .
) because the rules around cookies and subdomains are weird and counterintuitive and trying to do multiple domains under localhost without a third part makes some of those weird rules bite you.
Sign in to participate in this thread!
The Laravel portal for problem solving, knowledge sharing and community building.
The community