Estoy tratando de escribir direcciones URL limpias para mi sitio web. Soy un novato en esto así que perdónenme. Mi archivo .htaccess actualmente se ve así:
RewriteEngine On RewriteRule ^([a-zA-Z0-9-]+)$ something.php?query=$1 RewriteRule ^([a-zA-Z0-9-]+)/$ something.php?query=$1 La primera regla parece funcionar. Por ejemplo, website.com/good-looking-query-string de hecho vuelve a escribir a website.com/something.php?query=ugly+looking+query+string
La segunda regla es donde estoy teniendo un problema. No puedo hacer que esa barra inclinada funcione. Por ejemplo, website.com/good-looking-query-string/ parece abrir la página pero sin aplicar ninguna regla de CSS. Noté que todos los enlaces terminan adjuntos a la cadena de consulta también. Por ejemplo, el enlace de regreso a index.php termina como website.com/good-looking-query-string/index.php -string/index.php
Necesito hacer que esa barra inclinada funcione. ¿Qué demonios estoy haciendo mal?
Puede combinar dos líneas en una línea:
RewriteEngine On RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=$1 En este caso / será opcional
Su problema es del lado del cliente, está utilizando rutas relativas pero necesita usar rutas Root-relative . Una URL de:
website.com/good-looking-query-stringcargas desde la raíz. Una URL de:
website.com/good-looking-query-string/ se carga desde el directorio good-looking-query-string .
Entonces, en lugar de href="style.css" , debe tener "href="/style.css" and the index issue should be href="/index.php" instead of href="index.php"`.
Como se señaló en el comentario anterior, su expresión regular podría simplificarse agregando un ? en la barra inclinada final para que sea una opción. Sin embargo, ese no es su problema, solo simplifica las reglas.
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=$1