使用Apache的Laravel 4路由

时间:2014-05-11 17:15:15

标签: apache laravel laravel-4

我刚刚开始学习laravel 4但是我遇到了路线问题。当我转到我的根网址时,路由似乎工作正常但是当我尝试访问我的第二条路径时,我收到404错误,服务器日志显示未找到的文件'错误。

我设置 AllowOverride ALL 并将原始.htaccess代码更改为我在下面发布的代码。

注意: example.com正在运行,它会按预期返回All cats

这是代码:

路线

Route::get('/', function(){
    return "All cats";
});

Route::get('cats/{id}',function($id){
    return "Cat #$id";
})->where('id','[0-9]+');

的.htaccess

<IfModule mod_rewrite.c>
     RewriteEngine on

     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d

     RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

的httpd.conf

<VirtualHost *:80>
        ServerAdmin admin@example.com
        DocumentRoot /var/www/html/cats/public
        ServerName example.com
        ErrorLog logs/example.com-error_log
        CustomLog logs/example.com-access_log common
</VirtualHost>
尝试访问example.com/cats/123

时出现

HTML错误

The requested URL /cats/123 was not found on this server.

错误日志

 File does not exist: /var/www/html/cats/public/cats

1 个答案:

答案 0 :(得分:4)

AllowOverride指令是每个目录,因此将它随机地放在Apache的配置文件中不会起作用。

在Laravel安装中为public目录创建一个新的Directory块,并将AllowOverride All放在那里,如下所示:

<Directory "/path/to/your/laravel/public">
    AllowOverride All
</Directory>

此外,如果您只托管单个Laravel安装,则无需像您一样使用虚拟主机,只需将现有的DocumentRoot指令和Directory块更改为指向Laravel的公共目录,并在该目录块中添加AllowOverride All