Pergunta

Quando eu acesso meu site no MAMP como assim, funciona muito bem

localhost/site/about-us/

Quando o carrego para o meu servidor remoto e o acessio assim

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

Todas as solicitações remontam ao 'padrão' configurado em bootstrap.php.

Aqui está minha configuração de rota.

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

O problema é que, sempre que é carregado no meu servidor, qualquer solicitação como / about-us / está sempre inadimplente para casa conforme especificado ao definir a rota. Se eu alterar esse padrão para 'Sobre-us', cada página vai para 'sobre nós'.

Alguém sabe o que pode estar causando isso? Obrigado

ATUALIZAR

Aqui está um hack que funciona, mas é certo feio como o inferno. Ainda prefiro saber por que não funciona de acordo com o esperado.

// 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',
    ));
Foi útil?

Solução

Seu código é basicamente uma rota de captura (ele está sendo correspondido para todas as solicitações). Você deve restringir assim.

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

O terceiro parâmetro é uma expressão regular que define o que a rota deve corresponder.

Essa rota irá rotear tudo correspondido na expressão regular para o controlador de página e sua ação de índice.

Você pode então usar $page = $this->request->param('page'); em sua ação.

Outras dicas

Você não está confundindo $ página com $ ação?

Se eu tentar isso, funciona muito bem. Aqui está o método de ação dos meus controladores:

public function action_index($page = NULL)

{
    var_dump($page);
}

Se eu navegar para

localhost/site/blup

Eu vejo um bom

string(4) "blup"

sendo eco. Eu tenho a configuração de rota padrão idêntica à sua.

Parece que a detecção automática do URL por Kohana não está funcionando para a configuração do seu servidor ... em que servidor da web está falhando?

Você pode alterar o pedido :: instance ()-> Execute () ... linha no bootstrap para começar com:

Request :: instance ($ _ server ['request_uri'])-> Execute () ...

Isso garantirá que use o URI correto.

Dito isto ... como o desenvolvedor de pixels diz, sua rota parece ... estranho .. para mim;)

Mas - como funciona no MAMP - a rota provavelmente não é o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top