我的路线是返回一个404,我该如何解决这些问题?(My Routes are Returning a

2019-06-26 18:01发布

我刚开始学习Laravel框架和我在与路由的问题。

那的工作的唯一途径是附加到Laravel开箱默认主页的路线。

我在Windows上使用WAMP,它使用PHP 5.4.3和Apache 2.2.22,而我也有启用了mod_rewrite,并且已经删除了“的index.php”从application.php配置文件中留下一个空字符串。

我创建了一个新的控制器称为用户

class User_Controller extends Base_Controller {

    public $restful = true;

    public function get_index() 
    {
        return View::make('user.index');
    }
}

我已经创建了一些基本的HTML代码的应用程序/视图/用户/名为index.php的视图文件,并在routes.php文件我已经添加了以下内容:

Route::get('/', function () {
    return View::make('home.index');
});

Route::get('user', function () {
    return View::make('user.index');
});

访问根(当第一个路径工作正常http://localhost/mysite/public )在我的网页浏览器,但是当我尝试去我的第二条路线http://localhost/mysite/public/user ,我收到了404未找到错误。 为什么会这样发生?

Answer 1:

你有没有尝试添加这对你的路由文件,而不是Route::get('user', "user@index")

在之前的一段文字@user在这种情况下,直接将网页的用户控制器和之后的一段文字@index ,直接将脚本的user功能public function get_index()

我看你正在使用$restful ,在这种情况下,您可以将您的设置RouteRoute::any('user', 'user@index') 这将同时处理POSTGET ,而不是单独写他们两个。



Answer 2:

在我的Ubuntu安装LAMP,我解决了这个问题有以下2个变化。

  1. 启用Apache服务器的mod_rewrite: sudo a2enmod rewrite
  2. 编辑/etc/apache2/apache2.conf中 ,改变为/ var / www目录中有“AllowOverride”指令(这是我的主文档根目录): AllowOverride All

然后重新启动Apache服务器: service apache2 restart



Answer 3:

使用WAMP WAMP上点击图标 - > apache->的Apache模块 - >滚动和检查rewrite_module重启中用LoadModule rewrite_module

注意,服务器应用程序会自动为你一旦启用“rewrite_module”重新启动



Answer 4:

您是否尝试过检查

http://localhost/mysite/public/index.php/user 

是工作? 如果是这样,那么要确保所有的路径的文件夹没有任何大写字母。 我有同样的情况,将字母小写帮助。



Answer 5:

我正在使用的EasyPHP同样的问题。 发现我必须指定AllowOverride All在我的<Directory>httpd.conf 。 没有这一点,阿帕奇有时会忽略你.htaccess

矿最终看上去像这样...

<Directory "D:/Dev">
    Options FollowSymLinks Indexes
    #### NEXT IS THE CRUCIAL LINE ####
    AllowOverride All                  
    Order deny,allow
    Allow from 127.0.0.1
    Deny from all
    Require all granted     
</Directory>


Answer 6:

你可以尝试移动root/public/.htaccessroot/.htaccess ,它应该工作



Answer 7:

路线

用它们来定义不通过控制器进行管理的具体路线。

控制器

当你想使用传统的MVC架构使用它们

解决问题的方法

除非你想为一个控制器动作特定的“命名”路线,你不注册控制器所使用的路线。

而不是为你的控制器操作的路线,只需注册您的控制器:

Route::controller('user');

现在你的控制器被注册,你可以浏览到http://localhost/mysite/public/user ,你的get_index将会运行。

您也可以注册一气呵成的所有控制器:

Route::controller(Controller::detect());


Answer 8:

不要忘了“ RewriteBase在” public/.htaccess

例如 :

Options +FollowSymLinks
RewriteEngine On
RewriteBase /your/folder/public


Answer 9:

好了,扑我的头在这个问题上有点过了一天后......我起身做了我应该做昨天和调试发生了什么事!

什么是Laravel想在这里做,是插入文件index.php中给出的路由路径的右前方。 因此,举例来说,如果你指定的Route::get('/account/create', ...,和发言权执行你的应用程序localhost/laravel/authenticate/public/account/create您的浏览器,然后laravel想执行localhost/authenticate/public/index.php/account/create ,但要做到这一点.... Apache需要看到,通过请求/wamp/www/laravel/laravel/authentication/public (你的路径可能会有所不同,这取决于在您laravel应用程序实际上是安装,但尾随public是其中取代需要发生)必须有一个“重写规则”应用。

值得庆幸的是,laravel在一个方便的提供正确的重写规则.htaccess中应用程序的文件就在那里public文件夹。 问题是,在”的.htaccess'文件中的代码不会与WAMP配置开箱即用的方式工作。 这样做的原因似乎是在该线程的顶部由muvera提出的问题-需要被Apache载入前的rewrite_module代码RewriteRule的东西会工作。 哎呀这是有道理的。

是没有意义的部分:简单的stoppingrestarting Apache的服务不会拿起必要的更改为WAMP做正确的事与你重写规则-我知道,我试过很多次了!

是什么工作:使由muvera建议的修改(见螺纹的顶部)加载正确的模块。 然后,重置你的整个Windows会话,从而倾销阿帕奇了内存完全。 重新启动(重装)WAMP,瞧! 修复工作,正确的规则被应用,亚达,亚达; 我过上幸福地生活。

好消息了这一切:我知道了很多有关.htaccessRewriteRulehttpd.conf ,现在的文件。 有从您的应用程序的移动逻辑的好(性能)论点public .htaccess文件,并把它变成一个Directory ...在你的Apache“本”你的httpd.conf文件夹的部分BTW(尤其是如果你有机会到该文件夹)。



Answer 10:

试着在你的php.ini使短PHP标签。 WAMP有不送通常和laravel需要它们。



Answer 11:

Route::get('/', function()
{
return View::make('home.index');
});

Route::get('user', function()
{
return View::make('user.index');
});

上述改变

Route::get('user', function()
{
return View::make('user.index');
});

Route::get('/', function()
{
return View::make('home.index');
});

你必须在你的路由结束时使用“/”(住宅/默认)



Answer 12:

您必须使用Laravel 5的命令

  class User_Controller extends Controller {
  public $restful = true;
  public function get_index(){
  return View('user.index');
  }
  }

在routes.php文件

  Route::get('/', function()
  {
  return view('home.index');
  });

  Route::get('user', function()
  {
  return view('user.index');
  });

用于视图和控制器Laravel 5命令改变看到的文档我在以前相同的错误



Answer 13:

就在你的终端上运行。

 composer dump-autoload


Answer 14:

的路线不工作的主要问题是存在的MacOS mod_rewrite.so模块,在Linux的Apache配置的httpd.conf文件没有启用,所以可以的.htaccess工作。 我已经通过取消对该行解决了这个:

的LoadModule rewrite_module的libexec / apache2的/ mod_rewrite.so

除去来自上述线httpdf.conf的#。 然后,它会工作。 请享用!



Answer 15:

我想你已经删除默认的.htaccess文件的laravel公共文件夹内。 上传它应该解决您的问题的文件。



Answer 16:

简单的命令自动加载的依赖

composer dump-autoload

但还是收到您的一些重要文件丢失,从而去这里看看整个过程

https://codingexpertise.blogspot.com/2018/11/laravel-new.html



Answer 17:

如果您使用放浪虽然宅基地,有可能出现错误安装的共享文件夹。 它看起来像流浪汉从该文件夹需要您的文件和换出,实际上是在引导主机上,因此,如果有错误,你基本上试图从当你第一次做它访问您的Laravel安装文件(就是为什么你只获得了“家” - 在安装过程中产生的)。

您可以轻松地通过ssh方式连接到您的虚拟机,检查路线/ web.php文件,看看它实际上是你的文件进行检查。 如果不是,则退出并vagrant haltvagrant up ,然后查看启动错误。



文章来源: My Routes are Returning a 404, How can I Fix Them?