如何配置 apache Web 服务器以部署 laravel 5


How to configure apache web server to deploy laravel 5

我想在我的本地 apache Web 服务器上提供我的 Laravel 应用程序。但是,我遇到了问题。

为了测试我所做的应用程序是否可以在 apache 服务器上运行,我创建了一个非常简单的新应用程序,其中包含两条路由。

Route::group(['middleware' => 'web'], function() {
    Route::get('/', function() { return view('myview'); });
    Route::get('/link', function() { return view('myotherview'); });
});

当我从浏览器输入我的public目录时,它工作正常,它连接到/路由。但是当我提供指向其他路由的链接(/link)并尝试输入该路由时,它给了我404未找到错误。以下是我在myview中给出的到达/link路线的链接:

<a href="{{ url('/link') }}">Go</a>

当我显示页面的来源时,上面的行呈现为localhost/mylaravelapp/public/link

我在互联网上研究了这个问题,有一些关于启用 apache mod_rewrite的建议。我也通过键入 a2enmod mod_rewrite .然而,这似乎不起作用,得到了相同的结果。如何解决此问题?

我的 laravel 版本是 5.2,apache 2.4.7,我使用的是 xubuntu 14.04。

这是对我有用的常用配置(与您拥有的操作系统,Apache和Laravel版本相同)。编辑 apache2 配置文件(它应该在 /etc/apache2/sites-available/000-default.conf 下),添加以下内容:

Alias /yourdir /var/www/html/yourdir/public/
<Directory "/var/www/html/yourdir/public">
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

其中"yourdir"显然是您在/var/www/html路径下的文件夹。修改配置文件后重新启动服务器

sudo service apache2 restart

现在,您的public/.htaccess应该是这样的:

RewriteEngine On
RewriteBase /yourdir/
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Authorization Headers
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]