【问题标题】:Requested URL was not found on this server while running a laravel application运行 laravel 应用程序时在此服务器上找不到请求的 URL
【发布时间】:2017-01-27 18:35:04
【问题描述】:

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

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

我在数字海洋上使用 linux 16.04 服务器,在 localhost 上一切正常。我尝试了多种解决方案,但似乎没有任何效果。非常感谢任何帮助。

我的路线文件

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>

我也想要一个不会强迫我移动文件的解决方案,因为这样做最终会破坏作曲家和工匠。

【问题讨论】:

  • 配置文件夹中的.envapp.php 中的APP_URL 是什么?
  • 是否安装了mod_rewrite?您可以通过apachectl -M 查询
  • AllowOverride all 用于您的 laravel,将其放入虚拟主机定义中的 Web 服务器配置中
  • 尝试清除服务器上的缓存。 php工匠路线:清除
  • @HendraNucleo APP_URL 是 mydomain.name.com

标签: php linux laravel ubuntu


【解决方案1】:

为了让你的 .htaccess 接管并处理通过 Laravel 的路由,你需要告诉你的 vhost 允许它的配置被覆盖(通过 .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

【讨论】:

  • 这是经过验证的概念。 +1。
  • 我已按照这些步骤操作,现在我无法访问 mydomain.name.com。它现在也抛出了类似的错误。
  • 您标记了这个 Ubuntu,a2enmod 是一个命令,如果您在 Ubuntu 上安装了 Apache,您应该能够运行该命令。如果运行 CentOS/RedHat,该错误很常见。你确定apachectl -M | grep rewrite 没有回来吗?
  • 如果您不使用 PHP-FPM,请删除目录部分中的 PHP-FPM 部分。
  • 您是否重新加载了 Apache? sudo service apache2 reload。另外,您看到了什么错误?
猜你喜欢
  • 2017-12-26
  • 2015-03-30
  • 2016-11-23
  • 2015-12-17
  • 2016-12-21
  • 2016-07-23
  • 1970-01-01
  • 2017-03-21
  • 2010-10-16
相关资源
最近更新 更多