Laravel Route :: controller()不能使用不同的URI(PHP版本5.5,Laravel版本4.2。*)

时间:2014-09-15 18:55:25

标签: php laravel laravel-routing

为所有程序员做好准备!

前几天,我买了一个域+托管。我用Laravel 4.2.x做了一个本地项目,我想将它切换到我的在线服务器。我注意到我需要PHP版本5.5来运行这个版本的Laravel,所以我在.htaccess文件中更改了它。

现在一切似乎都是正确的,但喷射不正确。将链接(href)链接到其他页面将不起作用!每次我路由到没有'/'URI的URL时,我都会收到一个错误页面,说服务器找不到这个文件。

我的档案:

// routes.php

<?php

Route::controller('/', 'PageController');

//Route::get('/', 'PageController@getIndex');
//Route::get('/contact', 'PageController@getContact');

PageController.php

<?php

class PageController extends BaseController {

    protected $layout = 'master.master';



    public function getIndex() {

        return View::make('pages.index');

    }

    public function getContact() {

        return View::make('pages.contact');

    }

}

我的观点:一切都是正确的,因为可以通过'/'URI访问联系页面,但我无法访问其他URI的页面。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您的代码很好,但路由区分大小写。因此http://example.com/Contacthttp://example.com/contact

不同

第一个(大写字母C)应该失败并显示“找不到控制器方法”错误。第二个(小写c)应该可以工作。

如果不是区分大小写问题,则您的.htaccess文件在您的网站托管服务商上不正确,丢失或不受支持。这是一个知道好的.htaccess文件的例子:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>