Routing funziona su localhost, ma non sul server di vivere
-
20-09-2019 - |
Domanda
Quando posso accedere al mio sito su MAMP in questo modo, funziona benissimo
localhost / sito / chi-siamo /
Quando carico al mio server remoto e l'accesso in questo modo
tutte le richieste risalgono al 'default' istituito nel bootstrap.php
.
Ecco il mio impostazione del percorso.
Route::set('default', '(<page>)')
->defaults(array(
'page' => 'home',
'controller' => 'page',
'action' => 'index',
));
Il problema è che, ogni volta che viene caricato al mio assistente, qualsiasi richiesta come / chi-siamo / è sempre inadempiente a casa , come specificato quando si imposta il percorso. Se cambio che di default a 'chi-siamo', ogni pagina va a 'Chi siamo'.
Qualcuno sa che cosa può causare questo? Grazie
Aggiorna
Ecco un hack che lavori , ma è sicuro brutto come l'inferno. Ancora Preferirei sapere perché non funziona come da previsto.
// 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',
));
Soluzione
Il tuo codice è fondamentalmente un fermo tutto percorso (è in fase abbinato per tutte le richieste). Si dovrebbe limitare in questa maniera.
Route::set('static', '(<page>)', array('page' => 'about-us'))
->defaults(array(
'controller' => 'page',
'action' => 'index',
));
Il terzo parametro è un'espressione regolare che definisce ciò che il percorso deve corrispondere.
Questo percorso sarà percorso tutto abbinato nelle espressioni regolari al controller di pagina e la sua azione indice.
È quindi possibile utilizzare $page = $this->request->param('page');
nella vostra azione.
Altri suggerimenti
Non sei confondere $ pagina per $ azione?
Se provo questo, funziona bene. Ecco il mio metodo di controllori azione:
public function action_index($page = NULL)
{
var_dump($page);
}
Se passo in rassegna a
localhost/site/blup
Vedo vedere una bella
string(4) "blup"
essere echo'd. Ho l'impostazione percorso di default identica alla vostra.
Sembra che il rilevamento automatico di Kohana dell'URL non funziona per la configurazione del server ... Che server Web è che venendo a mancare su?
Si potrebbe alterare la Request :: istanza () -> execute () ... linea nella bootstrap di iniziare con:
Richiesta :: esempio ($ _ SERVER [ 'REQUEST_URI']) -> execute () ...
che garantirà utilizza il corretto URI ..
Detto questo ... come The Pixel Developer dice, il percorso sembra strano .. .. per me;)
Ma - dal momento che funziona su MAMP - Il percorso non è probabile il problema.