除了root之外,Laravel路由不起作用

时间:2014-02-24 09:16:18

标签: php apache .htaccess laravel

我一直在这个问题上花费数小时,希望找到出路。我已经正确设置了laravel,创建了一个项目myapp

我的route.php文件只包含

Route::get('/', function()
{
return View::make('hello');
});

Route::get('/users', function()
{
    return 'Users!';
});

当我跑步时

http://localhost/myapp/public/

我正确地获得了laravel启动页面

当我跑步时

http://localhost/myapp/public/users

我得到了

The requested URL /myapp/index.php was not found on this server.

我不知道为什么要寻找index.php。

当我跑步时

http://localhost/myapp/public/index.php/users

我得到一个包含文字“用户”的页面。我应该在运行时获取此页面

http://localhost/myapp/public/users

代替。

下面是我的.htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    Rewritebase /myapp/
    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

有什么想法吗?我在Linux上运行Apache。

7 个答案:

答案 0 :(得分:3)

您的RewriteBase设置为/myapp/,但您的index.php文件位于/mayapp/public/,不是吗?

因此,我认为您会发现RewriteBase需要/myapp/public/

答案 1 :(得分:0)

在您的application / config / application.php文件中更改:

'index' => 'index.php',

为:

'index' => '',

这应该告诉laravel不要使用index.php并正确地重写。

它适用于laravel附带的标准.htaccess文件(如果您修改了它,则没有检查)

答案 2 :(得分:0)

使用此重写规则:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /my_app
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

另外,在`application / config / app.php'中更改:

'index' => 'index.php'

'index' => ''

答案 3 :(得分:0)

  1. 确保在apache Web服务器上启用了mod_rewrite。
  2. 确保您的vhost配置允许并解析htaccess文件

答案 4 :(得分:0)

最快的方法是在命令行中添加符号链接:

ln -s your/acutal/path/myapp/public app-dev

现在浏览http://localhost/app-dev应该可以正常工作以及所有路线。您可以将app-dev更改为您想要的任何名称。

答案 5 :(得分:0)

执行此操作,然后尝试重新启动apache。

sudo a2enmod rewrite

要重新启动apache:sudo services apache2 restart

答案 6 :(得分:0)

我在生产服务器中遇到了同样的问题,似乎没有任何工作,没有chmod / s,没有其他解决方案,只是在.htaccess中添加了一条简单的行。

RewriteBase /

感谢线程和用户odaria