Điều này thật dễ dàng. Thứ nhất - KHÔNG thay đổi tệp .htaccess
từ mặc định do Laravel cung cấp. Theo mặc định, tất cả các yêu cầu cho miền của bạn sẽ được chuyển đến tệp index.php
của bạn, đó chính xác là những gì chúng tôi muốn.
Sau đó, trong tệp routes.php
của bạn, chỉ cần sử dụng bộ lọc 'trước', bộ lọc sẽ lọc tất cả các yêu cầu đến ứng dụng của bạn trước khi thực hiện bất kỳ việc gì khác.
Route::filter('before', function()
{
// Check if we asked for a user
$server = explode('.', Request::server('HTTP_HOST'));
if (count($server) == 3)
{
// We have 3 parts of the domain - therefore a subdomain was requested
// i.e. user.domain.com
// Check if user is valid and has access - i.e. is logged in
if (Auth::user()->username === $server[0])
{
// User is logged in, and has access to this subdomain
// DO WHATEVER YOU WANT HERE WITH THE USER PROFILE
echo "your username is ".$server[0];
}
else
{
// Username is invalid, or user does not have access to this subdomain
// SHOW ERROR OR WHATEVER YOU WANT
echo "error - you do not have access to here";
}
}
else
{
// Only 2 parts of domain was requested - therefore no subdomain was requested
// i.e. domain.com
// Do nothing here - will just route normally - but you could put logic here if you want
}
});
chỉnh sửa: nếu bạn có một phần mở rộng đất nước (tức là domain.com.au hoặc domain.com.eu) sau đó bạn sẽ muốn thay đổi count ($ server) để kiểm tra 4, không phải 3
tôi giả sử bạn đang sử dụng Laravel 3? Hay bạn bắt đầu với laravel 4? – DonSeba
Tôi vẫn đang sử dụng Laravel 3. –
** Người dùng Laravel 4: ** Cuộn qua câu trả lời được chấp nhận. –