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

Bor*_*ora 10 php apache

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

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

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

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

<a href="{{ url('/link') }}">Go</a>
Run Code Online (Sandbox Code Playgroud)

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

我已经在互联网上研究了这个问题,并且有一些关于启用apache mod_rewrite的建议.我也通过打字完成了a2enmod mod_rewrite.然而,这似乎不起作用,得到相同的结果.我该如何解决这个问题?

我的laravel版本是5.2,apache 2.4.7,我正在使用xubuntu 14.04.

Dam*_*rsy 15

这是适用于我的常用配置(与您相同的操作系统,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>
Run Code Online (Sandbox Code Playgroud)

其中"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]
Run Code Online (Sandbox Code Playgroud)

  • 不确定`Order allow,deny` /`allow from all`在Apache 2.4中是如何工作的,因为这些指令在2.2中被删除了.这些行应替换为"Require all granted".([参考](https://httpd.apache.org/docs/2.4/upgrading.html)) (3认同)
  • 所以/ yourdir文件夹是`/ var/www/html/yourdir`?如果这个例子更具体一点,我觉得这样会让人感到困惑.我坐在这里想知道你是不是因为懒惰而写出路径,或者当你说"你的文件夹在`/ var/www/html`路径下"时我不明白你的意思.这个例子对我来说也不适用,所以我不确定我是否正确理解它.`DocumentRoot`应该保留为`/ var/www/html`吗? (3认同)