Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: SrTrp en 23 Febrero 2020, 07:00 am



Título: [Resuelto] ¿Como puedo modificar la URL?
Publicado por: SrTrp en 23 Febrero 2020, 07:00 am
Bueno eh visto sitios que tiene por ejemplo esto: sitio.com.mx/Menu/panel
¿como puedo hacer eso? lo normal seria sitio.com.mx/Menu/panel.php


Título: Re: ¿Como puedo modificar la URL?
Publicado por: @XSStringManolo en 23 Febrero 2020, 13:15 pm
En los archivos de configuración de tu servidor.


Título: Re: ¿Como puedo modificar la URL?
Publicado por: #!drvy en 23 Febrero 2020, 15:21 pm
Se llaman friendly URLs, consiste en usar url rewriting.

https://www.danielmorell.com/guides/htaccess-seo/user-friendly-urls/make-your-urls-seo-friendly


En tu caso si solo quieres convertir Menu/panel.php a Menu/panel, bastaria con quitar la extensión php.


https://stackoverflow.com/questions/4908122/removing-the-php-extension-with-mod-rewrite


Saludos


Título: Re: [Resuelto] ¿Como puedo modificar la URL?
Publicado por: MetaNoia en 28 Febrero 2020, 00:14 am
Tambien puedes crear tus propias urls para que apunten a un fichero, por ejemplo pongamos que cuando un usuario haga una peticion GET a  "/Menu/panel" desde php vamos a mostrar el fichero "panel.php".

Si algún día usas algún framework se usa mucho lo de crear tus propias urls.De hecho una de las formas de saber si una pagina usa un framework o no es fijarse en las rutas que utiliza.

Lo que te comente antes usando el framework Laravel seria asi:
Fichero donde almacenas todas las rutas de tu aplicación que en Laravel es "web.php"

web.php
Código
  1. <?php
  2. //Peticion GET que apunta al metodo 'getPanel' del Controlador 'MenuController'
  3. Route::get('/Menu/panel', 'MenuController@getPanel');
  4.  

Después tendrás en otro fichero php el controlador "MenuController", que se encarga de recibir todas las peticiones y gestionar la lógica de tu aplicación:

MenuController.php
Código
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Str;
  5.  
  6. class MenuController extends Controller
  7. {
  8.     public function getPanel()
  9.     {
  10.            //Devuelves una vista con ese fichero
  11.            //'menu' indica el nombre de la carpeta donde guardamos las vistas a mostrar y
  12.           // 'panel' el nombre del fichero
  13.            return view('menu.panel');
  14.     }
  15. }
  16.  

Y por ultimo solo nos queda crear las vistas que es lo que se muestra al usuario, en este caso tendremos una carpeta llamada "menu" con un fichero "panel.blade.php"

Asi cuando el usuario ponga la  url "sitio.com.mx/Menu/panel" en su navegador(que es el método GET) se mostrara el contenido del fichero "panel.blade.php" .

Si te mola el tema aquí te dejo enlaces sobre la clase "Route" de php y la documentación de Laravel.
https://codereview.stackexchange.com/questions/120587/php-route-class (https://codereview.stackexchange.com/questions/120587/php-route-class)
https://laravel.com/docs/6.x (https://laravel.com/docs/6.x)


Título: Re: [Resuelto] ¿Como puedo modificar la URL?
Publicado por: @XSStringManolo en 28 Febrero 2020, 03:14 am
Casi siempre que se tenga dudas entre hacer algo utilizando la configuración del servidor y hacerlo en php, suele ser mucho más óptimo hacerlo modificando los archivos del servidor.


Título: Re: [Resuelto] ¿Como puedo modificar la URL?
Publicado por: MetaNoia en 28 Febrero 2020, 22:35 pm
Casi siempre que se tenga dudas entre hacer algo utilizando la configuración del servidor y hacerlo en php, suele ser mucho más óptimo hacerlo modificando los archivos del servidor.
Pero en este caso podemos encontrarnos con que sea una ruta personalizada y que no tenga nada que ver con la estructura de directorios del servidor. Por ejemplo ahora me encuentro haciendo una pagina web de retos a lo CTF y las rutas que tengo son las siguientes:
A la hora de especificar las rutas vereis unos '{}', son unos parametros que se pasan por la url de modo que desde el controlador podemos obtenerlos y filtrar resultados.
Código
  1. //RETOS
  2. //Muestra todos los usuarios que han completado esos retos
  3. Route::get('retos/validations/{reto}','RetoController@getValidations');//Ej:http://mypage.com/retos/validations/Nombre-Reto
  4. //Pagina principal que muestra todas las categorias disponibles
  5. Route::get('retos','RetoController@getRetos');;//Ej:http://mypage.com/retos
  6. //Pagina con un formulario para crear reto
  7. Route::get('retos/crear','RetoController@getCrear');;//Ej:http://mypage.com/retos/crear
  8. //Enviando datos para crear reto
  9. Route::post('retos/crear','RetoController@postCrear');;//Peticion POST para crear un nuevo reto
  10. //Obtiene todos los retos de una categoria
  11. Route::get('retos/{categoria}','RetoController@getRetosCategoria');;//Ej:http://mypage.com/retos/reversing
  12. //Muestra un reto especifico
  13. Route::get('retos/{categoria}/{reto}','RetoController@getReto');//Ej:http://mypage.com/reversing/nombre-reto
  14.  
Tomando como referencia el ultimo reto no tendria sentido crear esa estructura de directorios sino que en base a esos parametros puede obtener los datos de ese reto y mostrarselos al usuario en una vista.
El metodo 'getReto' del controlador 'RetoController' es el siguiente, fijaos que recibe los dos parametros pasados en la ruta.
Código
  1. public function getReto($categoria,$reto)
  2.    {
  3.      $idReto =
  4.      Project::where('nombre',$reto)
  5.      ->pluck('id')
  6.      ->all()[0];
  7.  
  8.      return view('retos.mostrar',
  9.      array('reto' => Project::findOrFail($idReto)));
  10.    }
  11.  
Y ya en la vista mostramos el reto que hemos pasado en el array