我安装Laravel 4使用作曲家同时还设置了一个虚拟主机。 目前,只有根路径是工作:
<?php
Route::get('/', function()
{
return View::make('hello');
});
这不是:
Route::get('/hello', function()
{
return View::make('hello');
});
我试图打是TasksController
在/tasks
:
Route::resource('tasks', 'TasksController');
这是给我的404错误也是如此。 还有什么比我做错了? 我有我的项目的根目录默认.htaccess文件:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我在Mac上使用本地主机。
Answer 1:
只是笑,看是否/index.php/hello
工作。
如果是的话,那么最有可能这是一个.htaccess
问题。
Answer 2:
对WAMP运行Laravel 4同样的问题(Windows 8中)。
为我工作的解决方案是:
打开Apache的httpd.conf找到这一行:
#LoadModule rewrite_module modules/mod_rewrite.so
- 取消注释该行(删除
#
) - 保存
httpd.conf
- 重新启动WAMP
它应该是工作!
Answer 3:
我有同样的问题和解决办法是启用的Apache2重写MOD
在终端使用下面的命令:
$ sudo a2enmod rewrite
$ sudo service apache2 restart
和魔术!
Answer 4:
有完全相同的问题。
两件事情我需要做的解决这个问题:
- 启用阿帕奇rewrite_module
从无所有 ,例如(阿帕奇2.4.9)更改的AllowOverride:
选择指数的FollowSymLinks多视图设置AllowOverride所有要求所有授权
FYI:用VirtualBox和流浪,而不是WAMP一起使用Laravel家园。 它包含Nginx的,而不是Apache的,但一切都运行在默认情况下,它被配置为Laravel明确。
Answer 5:
即使启用了mod_rewrite之后,你可能会如果你是走样的laravel /公用文件夹面对这个问题。
添加
RewriteBase /your_apache_alias
为.htaccess的伎俩。
Answer 6:
定义以外的任何时候比的家,你并不需要一个/:
Route::get('hello', function()
{
return View::make('hello');
});
应该管用。
Answer 7:
FOR Ubuntu用户 -测试的Ubuntu 18.04
1-启用国防部重写
sudo a2enmod rewrite
2 - 更改设置AllowOverride Apache中的conf文件:
sudo nano /etc/apache2/apache2.conf
从无更改的AllowOverride所有在此块
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
3-重启Apache
sudo service apache2 restart
Answer 8:
由于Laravel 4从地图在一个静态文件自动加载的文件,你需要在你添加一个新的控制器,以更新文件。 运行此命令重建静态文件:
php composer.phar dump-autoload
Answer 9:
我有这个问题(在Windows上使用手动安装的Apache 2.2),而原因是缺少AllowOverride
在我的虚拟主机在httpd.conf文件的根目录被默认为无。
FileInfo Options=MultiViews
是最少的一组,你需要为Laravel的.htaccess
如
<VirtualHost *:80>
DocumentRoot "C:/htdocs/domain.com/laravel/public"
ServerName foo.domain.com
<Directory "C:/htdocs/domain.com/laravel/public">
AllowOverride FileInfo Options=MultiViews
</Directory>
</VirtualHost>
或者使用AllowOverride All
,如果这也不行,你不关心安全性。
Answer 10:
有在前面的回答有点小瑕疵。 这可能助阵。
$ sudo a2enmod rewrite
$ sudo service apache2 restart
希望它。
Answer 11:
这是很明显的出现是因为“mod_rewrite的”的问题,在某些情况下,只是让在Apache中这个模块就足以得到固定。
然而,在我的情况,我不得不延长配置的虚拟主机以下列方式:
<VirtualHost *:80>
ServerName adplus.local
ServerAdmin sergey.donchenko@gmail.com
DocumentRoot /var/www/adplus.local/project/public
**<Directory "/var/www/adplus.local/project/public">
AllowOverride All
</Directory>**
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Answer 12:
我尝试了所有这些没有成功,然后我发现了另一篇文章,并改变了我的.htaccess这样:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.php [L]
</IfModule>
Answer 13:
这就像@GaryJ&@MartinGomez说。 这是应该对Apache服务器上运行的所有laravel 4个项目的公用文件夹被设置的.htaccess的内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Answer 14:
去
纳米的/ etc / nginx的/网站可用/ yoursite
找到try_file和如下替换:
try_files $uri $uri/ /index.php?$query_string;
Answer 15:
对于Nginx的用户,你可能复制的default
虚拟主机-但Laravel需要对一些自定义location
指令,以使Laravel应用做路由,而不是Nginx的。
在你/etc/nginx/sites-available/your-site-name
替换此位置指令:
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
然后运行sudo service nginx reload
,以使更改生效。
Answer 16:
我有一个类似的问题在Ubuntu 14.04管腔5.4。
该解决方案是两个部分对我来说。 首先在我的虚拟主机文件/etc/apache2/sites-enabled/my_vhost.conf
,我不得不添加下面的<Directory>
条目,从而允许覆盖,宣告我以后DocumentRoot
:
DocumentRoot /var/www/path/to/my/app/public
<Directory "/var/www/path/to/my/app/public">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
接下来,我不得不启用重写有:
sudo a2enmod rewrite
sudo service apache2 restart
Answer 17:
此更新为我工作。 在.htaccess文件只需添加的RewriteRules被接通以后以下。
Options -Indexes
Options +FollowSymLinks
工作就像魅力
Answer 18:
这一评论可能是晚了一点,但它可能会有所帮助。 路由到这样的另一种观点认为,当我有同样的问题:
Route::get('index', function () {
return view('index');
});
Route::get('login', function () {
return view('login');
});
但没有工作,所以我尝试了一切,我在所有相关的帖子中发现,但并不足以解决我的问题,所以我发现在httpd.conf中该行:
<Files ".ht*">
Require all denied
</Files>
所以我改变“拒绝”到“授”,也有评论我的.htaccess这一行:
#RewriteBase /
而工作! 我想,这行让Apache不会考虑的项目,使之转向理所当然了差异.htaccess文件。 希望这可以帮助别人同样的问题。
Apache服务器2工作@ Manjaro Linux操作系统(基于的Archlinux)
文章来源: Laravel 4 All Routes Except Home Result in 404 Error