首页 > 解决方案 > laravel 访问带有前缀('admin')的路由在 url 中添加 'public'

问题描述

我在共享主机中有 .htaccess 文件:

<IfModule mod_rewrite.c>

  RewriteEngine on

  RewriteCond %{REQUEST_URI} !^public

  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

它适用于所有路线,除了 cms 我的 web.php 路线文件是:

Route::get('/', 'HomeController@index')->name('home');
Route::get('/home', 'HomeController@index');
Route::get('/menu', 'HomeController@menu')->name('menu');
Route::get('/reservation', 'HomeController@reservation')->name('reservation');
Route::get('/gallery', 'HomeController@gallery')->name('gallery');
Route::get('/contact', 'HomeController@contact')->name('contact');
Route::get('/about', 'HomeController@about')->name('about');

Auth::routes();

Route::prefix('admin')->name('admin.')->namespace('Admin')->group(function () {
    Auth::routes();
    Route::middleware('auth:admin')->group(function () {
        Route::get('/', 'AdminController@index')->name('home');
        Route::match(array('GET', 'POST'), '/gallery/{gallery?}/{action?}', 'AdminController@gallery')->name('gallery');
        Route::match(array('GET', 'POST'), '/{controller}/{action?}/{id?}', 'AdminController@crud')->where('id', '[0-9]+')->name('crud');
    });    
});

它在我的本地服务器上运行良好,但是任何带有 /admin 的 url 都会自动通过我的 Web 服务器中的 /public 文件夹。

我的问题是如何使用 .htaccess 防止这种情况发生?

编辑:它仅在通过身份验证重定向时发生。例如。如果 /admin 那么它会重定向到以 /public/admin 身份登录 ALso,我刚刚发现,我无法从 cms 发布任何内容,它会给出 403 错误。它在本地主机上运行良好。

标签: laravel

解决方案


您应该将以下行添加到您的配置文件中,

<Directory /var/www/html/project/public>
        AllowOverride All
</Directory>

我希望这个能帮上忙


推荐阅读