Laravel 4所有路由除了在404错误首页结果(Laravel 4 All Routes Exc

2019-06-21 06:47发布

我安装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中)。
为我工作的解决方案是:

  1. 打开Apache的httpd.conf找到这一行:

     #LoadModule rewrite_module modules/mod_rewrite.so 
  2. 取消注释该行(删除#
  3. 保存httpd.conf
  4. 重新启动WAMP

它应该是工作!



Answer 3:

我有同样的问题和解决办法是启用的Apache2重写MOD

在终端使用下面的命令:

$ sudo a2enmod rewrite
$ sudo service apache2 restart

和魔术!



Answer 4:

有完全相同的问题。

两件事情我需要做的解决这个问题:

  1. 启用阿帕奇rewrite_module
  2. 从无所有 ,例如(阿帕奇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