我一直在这个问题上花费数小时,希望找到出路。我已经正确设置了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。
答案 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)
答案 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)