reescribir URL en htaccess y eliminar todo menos el parámetro


1

¿Es posible activar esta URL:

example.com/send.php?url=google.com&name=&submit=submit

En esta URL:

example.com/google.com

Cuando lo intento, sigo recibiendo errores 404 o 500 y es frustrante.

Aquí hay algunas cosas que he probado.

RewriteRule ^([^/]*)$ /send.php?url=$1&name=&submit=submit [NC,L]
RewriteRule ^([-\w\.]*)$ /send.php?url=$1&name=&submit=submit [NC,L]
RewriteRule ^(.*)$ /send.php?url=$1&name=&submit=submit [NC,L]

Si no es posible, ¿podría decirme por qué no? Soy bastante nuevo en mod_rewrite y quiero aprender.


Respuestas:


0

Puedes probar con las siguientes reglas.

RewriteCond %{REQUEST_URI} !send.php
RewriteRule ^([-\w\.])$ /send.php?url=$1&name=&submit=submit [NC,L]

Gracias, esto funciona! Pero con un patrón diferente. RewriteRule ^([^/]*)$ send.php?url=$1&name=&submit=submit [NC,L] El único problema ahora es que no puedo acceder a la página de inicio. Cuando example.comescribo no va a la página de inicio. Permanece encendido send.phpy el REQUEST_URIes '/'. Entonces mod rewrite solo considera url=que es una cadena vacía.
penfold_32

No necesita escapar del punto para que coincida con un punto literal en una clase de caracteres, y no necesita la NCbandera aquí, ya que \wya incluye letras mayúsculas y minúsculas. También necesitaría extender el patrón para incluir más caracteres, actualmente solo coincide con 1 carácter. es decir. ^([-\w.]+)$
MrWhite

@ penfold_32 Su página de inicio se reescribe porque el patrón ^([^/]*)$coincide con 0 caracteres (es decir, la página de inicio /). Cámbielo para incluir 1 o más. p.ej. ^([^/]+)$. Sin embargo, ese patrón parece demasiado genérico, según el ejemplo en su pregunta.
MrWhite

0

O podrías intentar

RewriteRule ^(.*) /$1/? [L,R=301]

No soy un experto en redireccionamiento, pero creo que el signo de interrogación al final corta todos los parámetros.


0

Si no está reescribiendo nada más, simplemente use:

FallBackResource /send.php

y analizar el PATHINFO


Debería analizar el REQUEST_URI, no el PATH_INFO. (No hay información de ruta adicional en esta solicitud)
MrWhite

0

Si desea analizar el parámetro para usarlo como archivo / directorio, debe intentar esto:

RewriteRule ^/send\.php\?url=([-\w\.])\&.*$ /$1 [NC,L]

No puede hacer coincidir la cadena de consulta con el RewriteRule patrón . ¿Pero parece que el OP quiere "ir para otro lado"?
MrWhite

Tienes razón. Lo siento, me olvidé de esto. Estoy más familiarizado con nginx donde es posible.
Tomgee
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.