【发布时间】:2020-03-10 08:52:50
【问题描述】:
我看到有人询问路由到位于子目录中的控制器。但我的问题是我的 Laravel 应用程序本身位于子目录中。默认路由有效,即 IE "/",但其他所有路由都无效。
这是我目前所拥有的:
Laravel 应用程序位于 public_html/dashboard
我已将位于 dashboard/public 中的 .htaccess 文件放入 dashboard/(Laravel 根目录)
我已将 server.php 文件更改为 index.php,以便可以从仪表板/而不是仪表板/公共访问该站点
我在RouteServiceProvider的mapWebRoutes方法中添加了->prefix('dashboard'):
protected function mapWebRoutes()
{
Route::middleware('web')
->prefix('dashboard') // <-- Added this
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
- 在 helpers.php 中为 assets 函数添加前缀路径:
function asset($path, $secure = null)
{
return app('url')->asset("dashboard/public/".$path, $secure);
}
我当前的路由设置
到目前为止,我的 web.php 有一些简单的路由,有些人可能认为我应该将 Route::prefix('dashboard') 包裹在我的路由周围,但这就是为什么我将前缀添加到 RouteServiceProvider 所以我的 web.php 中。 php 文件将始终具有该前缀。
Auth::routes();
Route::get('', 'EnquiryController@index')->name('home');
Route::post('switch', 'EnquiryController@switch')->name('switch');
Route::get('view-enquiry/{id}', 'EnquiryController@viewEnquiry')->name('view-enquiry');
几点说明:
我知道 Laravel 应用程序应该是完全公开的,并且 .env 文件不应该是可访问的。但现在我想让应用程序正常工作,之后我会处理隐藏它。
最后,进入dashboard/确实显示了一个完美的页面,但任何像dashboard/view-enquiry/52这样的路由或像dashboard/logout这样的Auth路由都只会返回一个404页面。
任何帮助将不胜感激,也许我这样做完全错误?
【问题讨论】: