Enrutamiento funciona en el servidor local, pero no en el servidor en vivo
-
20-09-2019 - |
Pregunta
Cuando tengo acceso a mi sitio en MAMP como tal, funciona muy bien
localhost / site / about-us /
Cuando subo a mi servidor remoto y acceder a ella como este
todas las solicitudes se remontan al 'default' establecido en bootstrap.php
.
Aquí está mi configuración de ruta.
Route::set('default', '(<page>)')
->defaults(array(
'page' => 'home',
'controller' => 'page',
'action' => 'index',
));
El problema es que cada vez que se ha subido a mi servidor, al igual que cualquier solicitud / about-us / siempre por defecto a casa como se especifica la hora de establecer la ruta. Si cambio que por defecto a 'sobre-nosotros', cada página va a 'sobre nosotros'.
¿Alguien sabe qué puede estar causando esto? Gracias
Actualizar
Aquí es un truco que funciona , pero es seguro feo como el infierno. Aún así yo preferiría saber por qué no funciona según lo 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',
));
Solución
Su código es básicamente una captura toda la ruta (que está siendo igualada para todas las solicitudes). Debe restringir como tal.
Route::set('static', '(<page>)', array('page' => 'about-us'))
->defaults(array(
'controller' => 'page',
'action' => 'index',
));
El tercero parámetro es una expresión regular que define lo que la ruta debe coincidir.
Esa ruta encaminará todo emparejado en la expresión regular para el controlador de la página y su acción index.
A continuación, puede utilizar $page = $this->request->param('page');
en su acción.
Otros consejos
¿no estás confundiendo la página $ $ para la acción?
Si intento esto, funciona muy bien. Aquí está mi método de acción controladores:
public function action_index($page = NULL)
{
var_dump($page);
}
Si hojeo a
localhost/site/blup
Veo ver un bonito
string(4) "blup"
siendo echo'd. Tengo la configuración de ruta por defecto idéntica a la suya.
Parece que la detección automática de la dirección URL de Kohana no está funcionando para la configuración del servidor ... ¿Qué servidor web está fallando en la que?
Se podía alterar la Solicitud :: ejemplo () -> ejecutar () ... línea en el sistema de arranque para empezar:
Solicitud :: instancia ($ _ SERVER [ 'REQUEST_URI']) -> ejecutar () ...
Esto asegurará que utiliza el URI correcto ..
Una vez dicho esto ... como dice el desarrollador de píxeles, la ruta se ve .. raro .. a mí;)
Sin embargo, - ya que trabaja en MAMP - La ruta probable es que no es la cuestión.