Laravel 8具有路径的奇怪行为

Laravel 8具有路径的奇怪行为,laravel,routes,laravel-8,Laravel,Routes,Laravel 8,最近,我在一个共享主机上安装了一个新的laravel应用程序,我遇到了路由问题: 在我的本地机器上一切正常,我得到的路由与routes文件夹中指定的完全相同。但是,在主机上,所有内容都在/public/directory之后 例如: {{ route('leads.index') }} 在刀片文件中,在本地计算机上将导致: 127.0.0.1:8000/导线,并按预期工作 但在服务器上,它会重定向到example.com/public/leads 尝试访问example.com/leads会

最近,我在一个共享主机上安装了一个新的laravel应用程序,我遇到了路由问题:

在我的本地机器上一切正常,我得到的路由与routes文件夹中指定的完全相同。但是,在主机上,所有内容都在/public/directory之后

例如:

{{ route('leads.index') }} 
在刀片文件中,在本地计算机上将导致: 127.0.0.1:8000/导线,并按预期工作

但在服务器上,它会重定向到example.com/public/leads

尝试访问example.com/leads会重定向到example.com/public

My routes/web.php文件:

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\LeadController;

Route::get('/', [LeadController::class, 'index']);
Route::resource('leads', LeadController::class);
Root index.php

header("refresh: 0; https://example.com/public/");
Root server.php

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

// This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';
本地服务器上的环境文件

'url' => env('APP_URL', 'https://127.0.0.1:8000'),
服务器上的env文件

'url' => env('APP_URL', 'example.com'),
服务器上的路由:列表:

+--------+-----------+-------------------+---------------+----------------------------------------------+------------+
| Domain | Method    | URI               | Name          | Action                                       | Middleware |
+--------+-----------+-------------------+---------------+----------------------------------------------+------------+
|        | GET|HEAD  | /                 |               | App\Http\Controllers\LeadController@index    | web        |
|        | GET|HEAD  | api/user          |               | Closure                                      | api        |
|        |           |                   |               |                                              | auth:api   |
|        | GET|HEAD  | leads/create      | leads.create  | App\Http\Controllers\LeadController@create   | web        |
|        | PUT|PATCH | leads/{lead}      | leads.update  | App\Http\Controllers\LeadController@update   | web        |
|        | GET|HEAD  | leads/{lead}      | leads.show    | App\Http\Controllers\LeadController@show     | web        |
|        | DELETE    | leads/{lead}      | leads.destroy | App\Http\Controllers\LeadController@destroy  | web        |
|        | GET|HEAD  | leads/{lead}/edit | leads.edit    | App\Http\Controllers\LeadController@edit     | web        |
+--------+-----------+-------------------+---------------+----------------------------------------------+------------+
.htaccess文件位于/public/文件夹中

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#向前端控制器发送请求。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

您的服务器在其配置文件中的
根路径是什么?@sergiu。您最好将域指向项目公用文件夹,而不是根目录folder@Peppermintology我在config/APP.php中只有'url'=>env('APP_url','example.com')。在那里看不到任何根路径设置。同样在env file:APP_URL=我的意思是,例如,在您的
nginx
配置文件中,会有一行类似于
root/var/www/example.com/public
或类似的内容。@JohnLobo您的意思是这样更好吗?