如何使用 Laravel 子域路由生成正确的链接?
How to generate proper links using Laravel subdomain routing?
我正在尝试将动态子域路由添加到项目中。我遇到的问题是在子域和顶级域之间生成 links。
首先我尝试以这种方式创建路线:
Route::get('/','MainController@getHome')->name('home');
Route::group(array('domain' => '{subdomain}.localhost/public'), function() {
Route::get('/','MainController@getHomeNew' )->name('home_mew');
});
我的假设是,以下列方式生成 links 会引导我找到正确的路线:
//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']); properely 生成link 到 '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 错误。
我如何在子域中生成 link 以代替顶级域?这可以在不依赖重定向的情况下完成吗?
好吧,我通过修改 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');
});
我正在尝试将动态子域路由添加到项目中。我遇到的问题是在子域和顶级域之间生成 links。
首先我尝试以这种方式创建路线:
Route::get('/','MainController@getHome')->name('home');
Route::group(array('domain' => '{subdomain}.localhost/public'), function() {
Route::get('/','MainController@getHomeNew' )->name('home_mew');
});
我的假设是,以下列方式生成 links 会引导我找到正确的路线:
//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']); properely 生成link 到 '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 错误。
我如何在子域中生成 link 以代替顶级域?这可以在不依赖重定向的情况下完成吗?
好吧,我通过修改 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');
});