Ayuda RewriteRule htaccess

  • Autor Autor kanikase
  • Fecha de inicio Fecha de inicio
kanikase

kanikase

Préstamo
Ómicron
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Hola betas, necesito su ayuda, yo no soy muy bueno con htaccess, por eso abro este tema.
Lo que pasa es que estoy haciendo las url amigables y lo que tengo si funciona, pero necesito que también redireccione.
La url es así (ejemplo):
Insertar CODE, HTML o PHP:
http://miweb.com/user.php?nick=kanikase

Y debería quedar así:
Insertar CODE, HTML o PHP:
http://miweb.com/user/kanikase

Si funciona como dije, pero necesito que cuando la url sea como en el primer ejemplo redirecciones, esto es lo que tengo en el htaccess:
Insertar CODE, HTML o PHP:
RewriteRule ^user/([a-zA-Z0-9-]+)/?$ user.php?nick=$1

Ya busqué en Google :encouragement:
 
En que plataforma estas trabajando? así te ayudaría mejor
 
¿Exactamente que te pasa, te muestra el error 500, la página en blanco o cualquier otra cosa?
 
¿Exactamente que te pasa, te muestra el error 500, la página en blanco o cualquier otra cosa?

Supongo que le muestra el mismo contenido tanto en:
Insertar CODE, HTML o PHP:
http://miweb.com/user.php?nick=kanikase
como en:
Insertar CODE, HTML o PHP:
http://miweb.com/user/kanikase
pero lo que quiere es que cuando entre a la primera lo redireccione a la segunda.

P.D: Lo sé porque hace un tiempo me pasaba lo mismo :witless:.

Saludos.
 
Un gran ejemplo de como se podría hacer, es el .htaccess de Wordpress, el cual funciona las URL Query como las Pretty URL. Te dejo su código aquí y te lo explico por encima:

Insertar CODE, HTML o PHP:
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


  • En la primera línea, preguntamos si el path contiene exactamente index.php, en ese caso, hacemos una redirección a la página actual, pero sin index.php. Finalmente con [L] hacemos que no siga leyendo el .htaccess.

  • En la segunda y tercera línea, es un condicional, mediante %{REQUEST_FILENAME} se obtiene el nombre del archivo al que se quiere acceder. Con !-f y !-d se le pregunta si dicho archivo NO es un archivo o un directorio respectivamente que exista en el hosting. En caso de que no exista, pasamos a la cuarta línea.

  • En la cuarta línea, le decimos que la URL actual se pase al archivo index.php.

Lógicamente, Wordpress tiene una clase llamada Rewrite que se encarga de procesar la URL, que en tu caso, deberías de hacerlo mismo (por comodidad).
 
Insertar CODE, HTML o PHP:
RewriteRule ^user/([a-zA-Z0-9-]+)/?$ user.php?nick=$1 [L]
Redirect 301 ^user.php?nick=([a-zA-Z0-9-]+)$ user/$1/

[L] le dice al mod_rewrite que si se aplica esa regla ya no se ejecuten las siguienes, esto es para evitar un ciclo infinito, suerte.
 
Atrás
Arriba