Frage

Wenn ich meine Website auf MAMP zugreifen wie so, es funktioniert großartig

  

localhost / site / about-us /

Wenn ich es meinem Remote-Server hochladen, und greifen Sie wie folgt

  

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

alle Anfragen gehen zurück auf die 'default' in bootstrap.php einrichten.

Hier ist meine Routeneinstellung.

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

Das Problem ist, wann immer es auf meinen Server hochgeladen wird, jede Anfrage wie / about-us / wird immer standardmäßig auf home wie angegeben bei der Routeneinstellung. Wenn ich diese Standardeinstellung ändern zu 'about-us', geht jede Seite 'über uns'.

Wer weiß, was kann die Ursache sein? Dank

UPDATE

Hier ist ein Hack, dass funktioniert , ist aber sicher hässlich wie die Hölle. Ich würde immer noch wissen, lieber, warum es nicht funktioniert wie pro erwartet.

// 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',
    ));
War es hilfreich?

Lösung

Der Code ist im Grunde ein catch all Route (es für alle Anforderungen abgestimmt ist wird). Sie sollten es wie so beschränken.

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

Der dritte Parameter ist ein regulärer Ausdruck, das definiert, was die Route entsprechen sollte.

Dieses Route leitet alles abgestimmt in dem regulären Ausdruck auf der Seite Controller und seinen Index Aktion.

Sie können dann $page = $this->request->param('page'); in Ihrer Aktion verwenden.

Andere Tipps

Werden Sie nicht $ Seite für $ action verkennen?

Wenn ich das versuchen, es funktioniert gut. Hier ist meine Controller Aktion-Methode:

public function action_index($page = NULL)

{
    var_dump($page);
}

Wenn ich wechseln Sie zu

localhost/site/blup

Ich sehe einen schönen

siehe
string(4) "blup"

echo'd wird. Ich habe die Standardroute Setup identisch mit Ihnen.

Es klingt wie Kohana die automatische Erkennung der URL ist nicht für den Server-Setup arbeiten ... Was Web-Server ist es Fehler auf?

Sie könnten den Antrag :: Instanz ändern () -> execute () ... Zeile in der Bootstrap zu beginnen mit:

Anfrage :: Instanz ($ _ SERVER [ 'REQUEST_URI']) -> execute () ...

Das wird dafür sorgen, verwendet es die richtige URI ..

That being said ... wie das Pixel Entwickler sagt, Ihr Weg aussieht .. seltsam .. mir;)

Aber - da es auf MAMP funktioniert - Der Weg ist wahrscheinlich nicht das Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top