Ajuda RewriteRule htaccess

  • Autor Autor kanikase
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
kanikase

kanikase

Préstamo impago
1
Xi
Programador
Verificación en dos pasos activada
Suscripción a IA
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):
Inserir CODE, HTML ou PHP:
http://miweb.com/user.php?nick=kanikase

Y debería quedar así:
Inserir CODE, HTML ou 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:
Inserir CODE, HTML ou PHP:
RewriteRule ^user/([a-zA-Z0-9-]+)/?$ user.php?nick=$1

Ya busqué en Google :encouragement:
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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:
Inserir CODE, HTML ou PHP:
http://miweb.com/user.php?nick=kanikase
como en:
Inserir CODE, HTML ou 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:

Inserir CODE, HTML ou 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).
 
Inserir CODE, HTML ou 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.
 
Voltar
Topo