Routage fonctionne sur localhost, mais pas sur le serveur en direct
-
20-09-2019 - |
Question
Quand j'accéder à mon site sur MAMP comme si, il fonctionne très bien
localhost / site / about-us /
Quand je télécharge sur mon serveur distant, et l'accès comme ceci
toutes les demandes remontent à la « défaillance » mis en place dans bootstrap.php
.
Voici ma configuration de l'itinéraire.
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 de « volte-nous », chaque page va « de nous ».
Quelqu'un sait-il ce qui peut être la cause? Merci
UPDATE
Voici un hack que fonctionne , mais il est sûr laid comme l'enfer. Je préfère encore savoir pourquoi il ne fonctionne pas comme prévu par.
// 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',
));
La solution
Votre code est essentiellement un fourre-tout la route (il est en cours de correspondance pour toutes les demandes). Vous devez restreindre comme si.
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 la route doit correspondre.
Cette route acheminera tout adapté à l'expression régulière au contrôleur de la page et son action index.
Vous pouvez ensuite utiliser $page = $this->request->param('page');
dans votre action.
Autres conseils
N'êtes-vous pas se méprendre sur la page $ pour l'action $?
Si j'essaie cela, il 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 un beau voir
string(4) "blup"
étant echo'd. J'ai la configuration de la route par défaut identique à la vôtre.
On dirait que la détection automatique de Kohana de l'URL ne fonctionne pas pour la configuration de votre serveur ... Ce serveur web est-il échoue sur?
Vous pouvez modifier la demande :: instance () -> execute () ... ligne du bootstrap pour commencer:
Demande :: instance ($ _ SERVER [ 'REQUEST_URI']) -> execute () ...
Cela assurera qu'il utilise l'URI correct ..
Cela dit ... En tant que développeur de Pixel dit, votre itinéraire semble .. bizarre .. pour moi;)
Mais - car il fonctionne sur MAMP - La route est probablement pas la question.