用于Multi-TLD的Laravel /主机设置

时间:2014-10-13 22:35:23

标签: laravel routes hosting multiple-domains tld

基本上我已经写了大约5次,仍然不知道如何正确询问,所以这里...

我想要两个域名,例如我已注册的 example.net example.info 。我希望他们指出我正在构建的一个应用程序,然后希望使用Laravel将两个不同的域路由到自己的页面......这是我尝试过的以及我遇到的问题遇到了......

**#1域名转发**

将我的应用程序上传到example.net并将.info域名转发到.net域名。然后试了......

Route::group(array('domain' => 'example.info'), function()
{
    Route::get('/', function(){ return 'INFO PAGE!'; });
});

Route::group(array('domain' => 'example.net'), function()
{
    Route::get('/', function(){ return 'NET PAGE!'; });
});

Route::get('/', 'HomeController@index');

问题

  1. Laravel Domain Routing似乎无法识别没有子域名的域名,例如' {subdomain} .example.net'会工作,但' example.net'和' example.info'惯于?

  2. 域名转发时,HTTP_HOST将始终显示 .net 而非 .info ,因此无法使用if或{路由文件中的{1}}语句

  3. 替代解决方案

    我能想到的唯一解决方案是使用我的主机的共享主机设置有两个单独的站点,每个站点都有适当的域指向它们并设置我的IDE以上传到两个站点?

    当然有更好的方法来做这件事吗?

    任何帮助都会很棒,我也是新手,所以如果你能保持简单请,谢谢......吉米

3 个答案:

答案 0 :(得分:2)

感谢回复人员,这就是我最终做的...只是将路线变为变量并将其传递给路线组,似乎对我有用

$frontendRoutes = function()
{
    Route::get('/', function(){
        return 'Index Page';
    })
};

Route::group(['domain' => 'example.net'], $frontendRoutes);
Route::group(['domain' => 'example.info'], $frontendRoutes);

答案 1 :(得分:0)

这似乎有效,但php工匠路线看起来有点不对。

http://ryantablada.com/post/multi-tld-routing-in-laravel

我遇到问题,让代码选择列表中的最后一个tld。这虽然并不完美,但似乎是我迄今为止找到的最佳答案。

答案 2 :(得分:0)

这可能是一个疯狂的黑客攻击,但是当我最终遇到同样的问题时,我希望有两个tld指向我的网站,然后根据他们来自哪个地方提供不同的语言我制作了这个解决方案。 / p>

我在app文件夹中创建了一个名为Routes的文件夹。

然后我在Routes文件夹中添加了两个文件夹,一个名为“com”,另一个名为“se”。

在每个文件夹中,我根据语言添加了我想要使用的文件。 在“com”文件夹中,我创建了一个名为pages.php的文件,代码为:

Route::get('/', 'PagesController@index');

Route::get('about', [
    'as' => 'about',
    'uses' => 'PagesController@about'
]);

然后我在“se”文件夹中添加了一个文件,名为pages.php,代码为:

Route::get('/', 'PagesController@index');

Route::get('om-oss', [
    'as' => 'about',
    'uses' => 'PagesController@about'
]);

然后回到routes.php我添加了这段代码:

$tld = strrchr ( $_SERVER['SERVER_NAME'], "." );
$tld = substr ( $tld, 1 );

foreach (File::allFiles(__DIR__.'\Routes\/'.$tld) as $partial) 
{
require_once $partial->getPathname();
}

所以现在每个tld都有一个文件夹,不是最好的解决方案,但它有效。