0

当我像这样在 MAMP 上访问我的网站时,效果很好

本地主机/站点/关于我们/

当我将它上传到我的远程服务器并像这样访问它时

http://www.server.com/site/about-us/

所有请求都返回到 中设置的“默认” bootstrap.php

这是我的路线设置。

Route::set('default', '(<page>)')
    ->defaults(array(
        'page' => 'home',
        'controller' => 'page',
        'action'     => 'index',
    ));

问题是,每当它上传到我的服务器时,任何像 /about-us/ 这样的请求总是默认为设置路由时指定的home 。如果我将默认设置更改为“关于我们”,每个页面都会转到“关于我们”。

有谁知道可能是什么原因造成的?谢谢

更新

这是一个可行的技巧,但肯定是丑陋的地狱我仍然想知道为什么它不能按预期工作。

// Hack because I can not get it to go to anything except 'default' below...

 $uri = $_SERVER['REQUEST_URI'];

 $uri = str_replace(url::base(), '', $uri);

 $page = trim($uri, '/');

 if ( ! $page) $page = 'home';


Route::set('default', '(<page>)')
    ->defaults(array(
        'page' => $page,
        'controller' => 'page',
        'action'     => 'index',
    ));
4

3 回答 3

3

您的代码基本上是一条捕获所有路线(它与所有请求相匹配)。你应该像这样限制它。

Route::set('static', '(<page>)', array('page' => 'about-us'))
->defaults(array(
    'controller' => 'page',
    'action'     => 'index',
));

第三个参数是一个正则表达式,它定义了路由应该匹配的内容。

该路由会将正则表达式中匹配的所有内容路由到页面控制器及其索引操作。

然后,您可以$page = $this->request->param('page');在您的操作中使用。

于 2010-02-16T13:54:15.950 回答
0

你不会把 $page 误认为 $action 吗?

如果我尝试这个,它工作得很好。这是我的控制器操作方法:

public function action_index($page = NULL)

{
    var_dump($page);
}

如果我浏览到

localhost/site/blup

我看到一个不错的

string(4) "blup"

被回应。我的默认路由设置与您的相同。

于 2010-02-16T10:38:29.817 回答
0

听起来 Kohana 对 URL 的自动检测不适用于您的服务器设置......它在哪个 Web 服务器上失败了?

您可以更改引导程序中的 Request::instance()->execute()... 行以开始:

请求::实例($_SERVER['REQUEST_URI'])->execute()...

这将确保它使用正确的 URI..

话虽这么说......正如像素开发者所说,你的路线看起来......奇怪......对我来说;)

但是 - 因为它适用于 MAMP - 路线可能不是问题。

于 2010-02-23T00:07:17.690 回答