【问题标题】:Laravel routing (?) problemsLaravel 路由(?)问题
【发布时间】:2013-05-06 20:14:10
【问题描述】:

所以我刚刚将我的网站从我的本地开发环境上传到我的服务器。 但是有一个问题。仅加载索引页面。我已经映射了一些 控制器到不同的路由,如下所示:

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

//site routes
Route::get('/','site@index');
Route::get('about','site@about');
Route::get('blog','site@blog');
Route::get('downloads','site@downloads');
Route::get('products','site@products');
Route::get('shop','site@shop');

//admin routes
Route::get('login','admin@login');

//ajax functions
Route::get('loadnews/(:num)','ajax@loadnews');
Route::post('sendmessage','ajax@sendmessage');
Route::post('loadblog','ajax@loadblog');
Route::post('loadblogdetails','ajax@loadblogdetails');

Event::listen('404', function()
{
    return Response::error('404');
});

Event::listen('500', function()
{
    return Response::error('500');
});

Route::filter('before', function()
{
    // Do stuff before every request to your application...
});

Route::filter('after', function($response)
{
    // Do stuff after every request to your application...
});

Route::filter('csrf', function()
{
    if (Request::forged()) return Response::error('500');
});

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::to('login');
});

当我点击指向这些路线的链接时,我得到了一个 简单错误:324 (net::ERR_EMPTY_RESPONSE):来自 chrome。

我该如何解决这个问题?

网站目前位于:site

【问题讨论】:

  • 我遇到了同样的问题。我在本地工作得很好,但只有索引页面显示在我的服务器上。你有想过吗?

标签: php laravel


【解决方案1】:

我遇到了类似的问题,我通过删除该行解决了它:

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

我正在使用命名的 Url。试试看吧。

【讨论】:

  • 这并没有完全解决问题,但后来我意识到我声明路线的顺序确实很重要。
【解决方案2】:

至少我能够通过添加来解决这个问题。 RewriteBase / 到 .htaccess 文件。现在一切似乎都正常了。

【讨论】:

    【解决方案3】:

    如果您还没有注册控制器,请确保您注册。

    Route::controller(array('site'));
    

    如果您在您的服务器上使用 Apache,请确保 mod_rewrite 已打开并已配置以及合适的 .htaccess 规则集,laravel 为 Apache 服务器提供了相当不错的 .htaccess

    还要确保您已从应用程序配置中删除了“index.php”基本网址。

    这些可能是路由不起作用的最常见原因。您还可以从命令行测试您的路由,从而使此过程更简单:

    php artisan route:call get about
    

    【讨论】:

    • 我有 Laravel 默认提供的 .htaccess。我还从网址中删除了 index.php 部分。还启用了 mod_rewrite,这就是为什么我无法弄清楚我的路线为什么不起作用的原因。
    • 您是否尝试过手动加载控制器Route::controller(array('site', 'ajax'));
    • 是的,虽然它不起作用。问题是整个站点在我的本地开发环境中运行良好(我为此使用 XAMPP),但在服务器上却没有:(。
    • 您的远程使用的是什么网络服务器?我似乎还记得 Chrome 不久前在我的几个网站上这样做了,清除缓存实际上解决了这个问题......
    • 系统 Linux 服务器 3.8.1 #1 SMP Sun Mar 3 09:59:20 CET 2013 x86_64 Apache 版本 Apache/2.2.24 来自 phpinfo()。
    【解决方案4】:

    在你的情况下,我必须放置根路由:

    Route::get('/','site@index'); 
    

    在 routes.php 文件的底部

    【讨论】:

      【解决方案5】:

      看来您使用的是 Linux,但如果这适用于未来有相同问题的读者:

      对我来说,问题是我在 Windows Server 2008 R2 上运行我的应用程序,并且我没有通过我的 IIS 管理器正确设置 htaccess。我没有意识到我需要这样做,因为对于其他网站,我的 htaccess 文件工作正常,但没有一个使用 mod_rewrite。

      解决方案是安装“IIS URL 重写模块 2”,然后我可以从 IIS 管理器中使用它,我会选择从 Laravel 包含的默认 htaccess 文件中“导入”所有内容。

      之后,加载所有页面,而不仅仅是索引。

      【讨论】:

        猜你喜欢
        • 2014-08-14
        • 2018-11-20
        • 2012-08-16
        • 2018-12-15
        • 2019-09-11
        • 2016-03-31
        相关资源
        最近更新 更多