Test Foro de elhacker.net SMF 2.1

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: mr-medi 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 (php) [Seleccionar]

<?php
//Peticion GET que apunta al metodo 'getPanel' del Controlador 'MenuController'
Route::get('/Menu/panel''MenuController@getPanel');


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 (php) [Seleccionar]

<?php
namespace App\Http\Controllers;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Str;

class 
MenuController extends Controller
{
     public function 
getPanel()
     {
            
//Devuelves una vista con ese fichero
            //'menu' indica el nombre de la carpeta donde guardamos las vistas a mostrar y 
           // 'panel' el nombre del fichero
            
return view('menu.panel');
     }
}


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: mr-medi en 28 Febrero 2020, 22:35 PM
Cita de: @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.
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 (php) [Seleccionar]

//RETOS
//Muestra todos los usuarios que han completado esos retos
Route::get('retos/validations/{reto}','RetoController@getValidations');//Ej:http://mypage.com/retos/validations/Nombre-Reto
//Pagina principal que muestra todas las categorias disponibles
Route::get('retos','RetoController@getRetos');;//Ej:http://mypage.com/retos
//Pagina con un formulario para crear reto
Route::get('retos/crear','RetoController@getCrear');;//Ej:http://mypage.com/retos/crear
//Enviando datos para crear reto
Route::post('retos/crear','RetoController@postCrear');;//Peticion POST para crear un nuevo reto
//Obtiene todos los retos de una categoria
Route::get('retos/{categoria}','RetoController@getRetosCategoria');;//Ej:http://mypage.com/retos/reversing
//Muestra un reto especifico
Route::get('retos/{categoria}/{reto}','RetoController@getReto');//Ej:http://mypage.com/reversing/nombre-reto

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 (php) [Seleccionar]

public function getReto($categoria,$reto)
    {
      $idReto =
      Project::where('nombre',$reto)
      ->pluck('id')
      ->all()[0];

      return view('retos.mostrar',
      array('reto' => Project::findOrFail($idReto)));
    }

Y ya en la vista mostramos el reto que hemos pasado en el array