簡體   English   中英

如何使用Laravel子域路由生成正確的鏈接?

[英]How to generate proper links using Laravel subdomain routing?

我正在嘗試將動態子域路由添加到項目中。 我遇到的問題是在子域和頂級域之間生成鏈接。

首先,我嘗試以這種方式創建路線:

Route::get('/','MainController@getHome')->name('home');

Route::group(array('domain' => '{subdomain}.localhost/public'), function() {
    Route::get('/','MainController@getHomeNew' )->name('home_mew');
});

我的假設是,以下列方式生成鏈接會使我走上正確的路線:

//I assumed this would always generate a link to the root of 'localhost/public/':
route('home'); 

//And that this would always take me to a sub domain root e.g. 'cats.localhost/public/':
route('home_new', ['subdomain' => 'cats']); 

當使用route('home_new',['subdomain'=>'cats'])在頂級域名頁面上時; 生成一個'cats.localhost / public'的鏈接。

問題是,一旦我在cats.localhost / public並使用route('home'),我仍然會被重定向到cats.localhost / public

所以我嘗試將頂級域路由包裝在一個自己的組中:

Route::group(array('domain' => 'localhost/public'), function() {
    Route::get('/','MainController@getHome')->name('home');
});

Route::group(array('domain' => '{subdomain}.localhost/public'), function() {
    Route::get('/','MainController@getHomeNew' )->name('home_mew');
});

但是,無論我是轉到頂級域根還是子域根,都會導致404錯誤。

如何在子域中生成鏈接,從而導致頂級域名? 這可以在沒有例如依賴重定向的情況下完成嗎?

我通過修改我的c:/ windows / system32 / drivers / etc / hosts文件並添加以下行解決了這個問題:

127.0.0.1 myapp.com subdomain.myapp.com anothersub.myapp.com

然后我更改了C:\\ xampp \\ apache \\ conf \\ extra \\ httpd-vhosts配置文件並添加了:

<VirtualHost *:80>
    ServerName www.myapp.com
    ServerAlias myapp.com
    DocumentRoot C:\xampp\htdocs\myapp\_src\public
</VirtualHost>

並且因此修改我的路線:

Route::group(array('domain' => 'myapp.com'), function()
{
    Route::get('/','MainController@getHome')->name('home');
});

Route::group(array('domain' => '{subdomain}.myapp.com'), function() {
    Route::get('/','SubController@getHome' )->name('home_new');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM