php - urls - webhosting
Reescritura de URL en PHP sin htaccess (5)
El sitio web se ejecuta en un servidor web en el que no tenemos acceso a un archivo .htaccess
. Sin embargo, quiero hacer la reescritura de URL para URL fáciles de usar.
por ejemplo, URL original
www.example.com/file?q=name
URL esperada
www.example.com/file/name
Como dijeron otras personas, solo use enlaces como /index.php/nice/looking/url
.
El "index.php" en el medio de la URL puede parecer un poco extraño, pero no creo que sea posible que se vea mejor sin .htaccess
De lo contrario, podría pedirle a su proveedor de alojamiento que redirija cualquier URL a /index.php para que pueda manejar la reescritura de URL sin tener /index.php
en su URL.
Luego puedes usar una coincidencia de expresiones regulares para detectar qué archivo incluir.
preg_match(''@[/]{1}([a-zA-Z0-9]+)@'', $_SERVER["PATH_INFO"], $matches)
($ matches contendrá todas las "partes" de la url en un formación)
Tenga cuidado al incluir los archivos, use una lista blanca para asegurarse de que nadie pueda cargar los archivos internos.
Prueba esto
www.example.com/file?q=name
a
www.example.com/name
(mejor que www.example.com/file/name
)
Abra su .htaccess
desde la carpeta raíz de su proyecto y agregue este código
Options +FollowSymLinks
RewriteEngine On
RewriteRule /.(js|css|jpe?g|png|gif)$ - [L]
RewriteRule "^([ /w-]+)/?$" /file?q=$1 [L,QSA]
Esto resuelve tu problema. Vea la publicación cómo reescribir la URL en .htaccess
Si tiene un servidor Apache y AcceptPathInfo está habilitado, puede usar la URL que escribió. Una solicitud de /file/name
se reescribirá automáticamente en /file
con el valor PATH_INFO de /name
if /file
es un archivo normal.
Su mejor opción será tener URLs como esta:
www.example.com/index.php/file/name
Sin embargo, deberás volver a escribir tu código PHP.
como Alix Axel sugirió que puedes usar
www.example.com/index.php/file/name
luego usará $_SERVER[''REQUEST_URI'']
para procesar la URL.