我的项目有以下路线:
Route::namespace('Admin')->prefix('admin')->group(function () {
Route::group(['middleware' => 'auth:admin'], function () {
// this is working on my local machine but it's skipped on server which is a subdomain.
Route::get('/', 'DashboardController@index')->name('admin.dashboard');
// other routes here. all of them working fine
Route::resource('pages', 'PageController')->except(['show']);
});
});
Route::get('/', 'HomeController@index'); // this is working fine
在我的本地计算机上打开app.test / admin时,一切正常。如果我没有登录,我可以看到我的登录页面,如果我是,则可以看到仪表板视图。 在服务器上,这是一个子域,如果我打开subdomain.app.com/admin,我什么也看不到。服务器响应为200,无任何错误。所有后续路由(例如admin / pages)都可以正常工作。
apache中的文档根目录设置为项目的根目录,而不是公共文件夹中的根目录。我在根目录中使用以下.htaccess文件。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>
我希望/ admin路由显示仪表板视图,但是会出现空白页。没有错误的地方会出现什么问题?
答案 0 :(得分:0)
建立这样的路线列表完全有帮助吗?
Route::group(
[
'domain' => '{account}.app.test',
'prefix' => 'admin', // This is the URL prefix
'as' => 'admin.', // This gets pre-pended to the route names.
'middleware' => 'auth:admin',
'namespace' => 'Admin'
],
function () {
Route::get('/', 'DashboardController@index')->name('dashboard'); // with 'as' property, this becomes 'admin.dashboard'
Route::resource('pages', 'PageController')->except(['show']);
}
);
答案 1 :(得分:0)
您可以通过在.env
文件中设置管理域和用户域,然后像这样使用Route::domain
来做到这一点:
Route::domain(env('APP_ADMIN_URL'))->group(function() {
Route::get('/', 'AdminController@index');
});
Route::domain(env('APP_USER_URL'))->group(function() {
Route::get('/', 'UserController@index');
});
除了确保您的两个域都路由到您的laravel公共目录之外,无需触摸您的htaccess
答案 2 :(得分:0)
我找到了答案;)
问题是我的公用文件夹中有一个名为admin的文件夹,与我尝试访问的路由相同。将文件夹重命名为随机名称可以修复我的/ admin路由。