php - 运行 Laravel 应用程序时在此服务器上找不到请求的 URL

标签 php linux laravel ubuntu

我在部署 Laravel 5.3 应用程序时遇到问题。

我收到一条错误消息,指出在服务器上找不到我的路线。令人惊讶的是,我能够毫无问题地进入欢迎页面,但如果我尝试点击注册按钮或任何其他途径,我会收到此错误。

我在 digital ocean 上使用 linux 16.04 服务器,在本地主机上一切正常。我尝试了多种解决方案,但似乎没有任何效果。非常感谢任何帮助。

我的路线文件

Auth::routes();

Route::get('/', function () {
    return view('login');
})->name('login');

Route::get('/login', function () {
    return view('login');
});

Route::get('auth/{provider}', 'Auth\RegisterController@redirectToProvider')->name('auth');
Route::get('auth/{provider}/callback', 'Auth\RegisterController@handleProviderCallback');

Route::group(['middleware' => ['auth']], function(){

    //Tasks
    Route::get('/task', 'TaskController@index');
    Route::get('/task/{taskId}/{notification?}', 'TaskController@view');
    Route::get('/create-task', 'TaskController@create');
    Route::get('/close-task/{taskId}', 'TaskController@finaliseTask');
    Route::post('/reinitialise-task/{taskId}', 'TaskController@reinitialiseTask');

    Route::post('/task', 'TaskController@store');
    Route::post('/task/comment/{taskId}', 'TaskController@postTaskComment');

    //Reports
    Route::get('/reports', 'ReportsController@view');
    Route::get('/create-report/task/{taskId?}', 'ReportsController@generateReport');

    //Settings  
    Route::get('/settings', 'SettingsController@index');
    Route::post('/category', 'SettingsController@storeTaskCategory');

});

我可以访问登录路径,但无法访问任何其他路径。

我已经设置了我的虚拟主机,如下所示。

<VirtualHost *:80>

ServerAdmin info@myemail.com
ServerName mydomain.name.com
ServerAlias www.mydomain.name.com
DocumentRoot /var/wwww/html/public
ErrorLod ${APACHE_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined

<VirtualHost>

我也希望有一个解决方案不会强制我四处移动文件,因为这样做最终会破坏 Composer 和 artisan 。

最佳答案

为了让您的 .htaccess 接管并通过 Laravel 处理路由,您需要告诉您的虚拟主机允许它的配置被覆盖(通过 .htaccess 文件)。

<VirtualHost *:80>

    ServerName mysite.com
    DocumentRoot "/var/www/mysite/public"

    <Directory "/var/www/mysite/public">

        Options Indexes FollowSymlinks MultiViews
        AllowOverride All
        Require all granted

        # ADD THIS IF USING PHP-FPM
        <FilesMatch "\.php$">
            Require all granted
            SetHandler proxy:fcgi://127.0.0.1:9000
        </FilesMatch>

    </Directory>

</VirtualHost>

AllowOverride All 值告诉 Apache 应用程序可以修改 vhost 配置。

如果您在 output of apachectl -M 中没有看到 mod_rewrite ,您需要启用它:

sudo a2enmod rewrite

确保在进行任何这些更改后重新加载 Apache:

sudo service apache2 reload

关于php - 运行 Laravel 应用程序时在此服务器上找不到请求的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900774/

相关文章:

c - USB Linux API : call ioctl requests from user space app

php - 如何在 PHP 中获取 url ID? (对于 mysql_query 更新)

java - Android 应用程序在访问本地主机时崩溃

linux - kubectl 没有显示环境变量

php - 在 Eloquent 关系中使用 withTrashed

php - 如何在不使用爆炸的情况下比较范围编号中的数据

php - 在 Laravel 5.4 的路由中使用 DELETE 方法

php - MySQL 列计数与第 1 行的值计数不匹配

php - 如何更新由 Laravel Eloquent 管理的时间戳(created_at 和 updated_at)的时区?

c# - Linux 上单声道中的 WLAN 信息