【发布时间】:2014-05-14 16:01:00
【问题描述】:
我正在创建一个平台来支持平台下的多个网站,有些网站需要有不同的域。
最常见的是使用同一个域:
myrootdomain.com/first_product/profile
myrootdomain.com/second_product/profile
在这些情况下,{first_product} 和 {second_product} 将作为参数传递给几乎所有函数。 /first_product 和 /second_product 是在同一平台下运行的完全不同的网站。
但我需要创建另一个产品,我可以在其中更改 TLD 并且仍然能够将 {anotherrootdomain} 标识为我的函数的第一个参数。像这样的:
anotherrootdomain.com/profile
我已经在使用 Route::bind 处理第一个参数。
<?php
Route::bind('short_url', function($value, $route)
{
$product = Product::where('short_url', $value)->first();
if(is_null($product))
return false;
return $product->id;
});
Route::get('/{short_url}/login', 'HomeController@login');
Route::get('/{short_url}/profile', 'UserController@profile');
现在我不知道该怎么做:
1) 寻找域名
2) 使用域作为第一个参数
我知道我的英语很糟糕,但我希望你能帮助我!
编辑:
我可以在 routes.php 上做这样的事情:
if($_SERVER['HTTP_HOST'] == "anotherrootdomain.com")
$tld = "anotherrootdomain";
那么我需要借此机会:
Route::get('/{short_url}/login', 'HomeController@login');
Route::get('/{short_url}/profile', 'UserController@profile');
到这里:
Route::get('/login', 'HomeController@login');
Route::get('/profile', 'UserController@profile');
我可以使用一个简单的 if 来做到这一点,但现在我无法在我的路由上传递参数! HomeController@login 需要一个参数,我需要传递 $tld 变量,但我不知道如何!
【问题讨论】:
-
其实你的英文还不错。
-
谢谢@bjb568,我犯了一些错误,但最重要的是传递信息! :)
-
也许您正在寻找
sub-domain解决方案? -
我认为这是不同的,@SheikhHeera。我想要一个新的顶级域,而不仅仅是一个子域。
-
所有顶级域都可以访问同一个laravel系统文件夹吗?这些路由是否定义在同一个路由文件中?
标签: php laravel laravel-routing