HTACCESS LIMPIAR URL ¿Cuál es la mejor manera de hacerlo?
-
11-12-2019 - |
Pregunta
Estoy trabajando en URL limpia para mi sitio web y noté que lo que encuentra en Internet está prácticamente en reescribir sus URL limpias a la URL con la URL con la que puede trabajar con el servidor.Así que algo así:
www.domain.com/profile/username --> www.domain.com/profile.php?u=username
RewriteEngine On
RewriteRule ^profile/(.*)$ /profile.php?u=$1 [L]
Ahora, con esto, debería vincularlo dentro de mi sitio web a la limpieza.Pero intuitivamente se siente más sólido / mejor en vincularse con la URL 'sucia'.Por lo tanto, en ese caso, debe usar Rewriterules para lo anterior y una regla de redireccionamiento para redirigir la 'URL sucia' a la URL limpia, por lo que el usuario solo ve la URL limpia en el navegador en todo momento.
www.domain.com/profile.php?u=username --> www.domain.com/profile/username
es este algo que es algo bueno que hacer.¿Está hecho por sitios web?¿Cuáles son los argumentos en contra / a favor de ello?
¿Y cómo haces una redireccionamiento de esta manera?Algo como lo siguiente no parece funcionar:
RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L]
Soy bastante nuevo para .htaccess para que pueda pedir algo que sea obvio ...
Solución
RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L]
no va a funcionar porque no puede coincidir con la cadena de consulta de un RewriteRule
(también tiene un espacio alejado en sus banderas).También desea coincidir con la solicitud real y no el URI porque simplemente causará un bucle redirecto de su otra regla.
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /profile\.php\?u=([^&\ ]+)
RewriteRule ^/?profile\.php$ /profile/%1 [R=301,L]