2010-02-16 6 views
0

Quand j'accéder à mon site sur MAMP comme si, il fonctionne très biende routage fonctionne sur localhost, mais pas sur le serveur en direct

localhost/site/about-us/

Quand je le télécharger à mon serveur distant, et l'accès comme ça

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

toutes les demandes retournent à la configuration «par défaut» dans bootstrap.php.

Voici le paramètre de ma route.

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

Le problème est, chaque fois qu'il se téléchargé sur mon serveur, toute demande comme/about-us/est en défaut toujours à la maison comme indiqué lors de la configuration de la route. Si je change cette valeur par défaut à "à propos de nous", chaque page passe à "à propos de nous".

Est-ce que quelqu'un sait ce que cela peut causer? Merci

MISE À JOUR

Voici un hack qui fonctionne , mais il est sûr laid comme l'enfer. Pourtant, je préférerais savoir pourquoi cela ne fonctionne pas comme prévu.

// 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', 
    )); 

Répondre

3

Votre code est fondamentalement un attraper tous les itinéraires (il est apparié pour toutes les demandes). Vous devriez le restreindre comme ça.

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

Le 3ème paramètre est une expression régulière qui définit ce que l'itinéraire doit correspondre. Cette route achemine tout ce qui correspond à l'expression régulière vers le contrôleur de page et son action d'index.

Vous pouvez ensuite utiliser $page = $this->request->param('page'); dans votre action.

+0

Merci! Je ne pouvais pas trouver une telle description nulle part dans la documentation. Je vous remercie! Je vous remercie! Je vous remercie! –

0

Ne confondez-vous pas $ page for $ action?

Si j'essaie cela, cela fonctionne très bien. Voici mes contrôleurs méthode d'action:

public function action_index($page = NULL) 

{ 
    var_dump($page); 
} 

Si je passe en revue à

localhost/site/blup 

Je vois voir une belle

string(4) "blup" 

étant echo'd. J'ai la configuration de route par défaut identique à la vôtre.

0

Il semble que la détection automatique de l'URL par Kohana ne fonctionne pas pour la configuration de votre serveur ... À quel serveur web échoue-t-il?

Vous pouvez modifier Request :: instance() -> execute() ...ligne du bootstrap pour commencer:

Demande :: instance ($ _ SERVER [ 'REQUEST_URI']) -> execute() ...

qui assurera qu'il utilise l'URI correct ..

Cela étant dit ... comme le dit le développeur Pixel, votre route semble .. étrange .. pour moi;)

Mais - puisque cela fonctionne sur MAMP - La route n'est probablement pas le problème.

Questions connexes