如何配置Laravel 5.1路由?

时间:2015-08-14 04:00:50

标签: php .htaccess laravel routing laravel-5

我已经通过作曲家安装了一个新的laravel 5.1。默认的预定义路由如下所示。

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

在Laravel 5.1及其文档之后的安装和基本配置之后,它可以正常使用上面的路由。但是当我把它变成:

Route::get('test', function () {
    return view('welcome');
});   

or 

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

并试图通过以下方式访问同一页面:

http://localhost/mylaravel/public/test

我收到了以下错误。

Not Found
The requested URL /mylaravel/public/test was not found on this server.

它的接缝就像路由不起作用。我已启用mod_rewrite,如下所示。

a2enmod rewrite

service apache2 restart

我尝试了三种不同的.htaccess如下。

# the defualt one
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

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

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

# attempt two
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# attempt three
<IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteBase /
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule . /index.php [L]
</IfModule>

根本不起作用。我忘了配置什么?如何解决此路由问题?

2 个答案:

答案 0 :(得分:0)

在这些人的帮助下,我已经解决了这个问题,因为我做了以下事情。在命令行中。

sudo a2enmod rewrite

sudo service apache2 restart

sudo nano /etc/apache2/sites-available/000-default.conf

查找DocumentRoot /var/www/html并在下方直接添加以下行:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

使用以下命令重新启动apache。

sudo service apache2 restart

使用Laravel安装提供的默认.htaccess,它可以正常工作。

答案 1 :(得分:0)

问题在于您的本地服务器正在运行。 通过在控制台中运行此命令来启动服务器:

php artisan serve --host=localhost --port=8080

然后尝试通过以下地址访问您的应用:

http://localhost:8080/test

在laravel应用程序中,您的公共目录中的 index.php 文件会收到所有请求,当您请求时,请 http://localhost/mylaravel/public/test
然后服务器认为您正在请求静态文件。