我刚刚开始学习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
答案 0 :(得分:4)
AllowOverride
指令是每个目录,因此将它随机地放在Apache的配置文件中不会起作用。
在Laravel安装中为public
目录创建一个新的Directory
块,并将AllowOverride All
放在那里,如下所示:
<Directory "/path/to/your/laravel/public">
AllowOverride All
</Directory>
此外,如果您只托管单个Laravel安装,则无需像您一样使用虚拟主机,只需将现有的DocumentRoot
指令和Directory
块更改为指向Laravel的公共目录,并在该目录块中添加AllowOverride All
。