htaccess, ignorar carpeta en la ruta friendlyURL

Weahl

Dispongo de una web con más o menos esta estructura:

/root
- css
- js
- sections
* coleccionismo
** articulos.php

Lo que necesito es que cuando llame a articulos/numismatica haga lo siguiente: /sections/coleccionismo/articulos?coleccion=numismatica

He conseguido hacerlo con este código:

Options +FollowSymlinks 
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^articulos/numismatica$ sections/coleccionismo/articulos.php?coleccion=numismatica [L,QSA]

Pero surge un gran problema, y es que cuando intento cargar un css por ejemplo con esta ruta css/articulos.css me está cogiendo esta articulos/css/articulos.css, la cual debería ser sections en vez de artículos y no tengo ni idea de como solucionarlo.

¿Alguna idea? Estoy perdidísimo :(

elkaoD

No entiendo muy bien el último párrafo. ¿Puedes explicarte de otra forma? El rewrite normal funciona, ¿no?

1 respuesta
Weahl

#2 Me está metiendo en la ruta, sin saber por qué, la carpeta Artículos, la cual ni siquiera existe, en vez de coger la buena que es Sections

Espero que así se entienda mejor, es un poco lioso la verdad

1 respuesta
elkaoD

#3 por qué no lo explicas con más detalle? Responde las tres preguntas básicas:

  • ¿Qué estás haciendo? -> es decir, qué URL pones
  • ¿Qué está ocurriendo? -> es decir, a qué URL va
  • ¿Qué debería ocurrir? -> es decir, a qué URL debería ir

Y respóndelas de forma concisa, clara e inambigua, nada de "en lugar de coger X coge Y".

Si además añades información extra (por ejemplo, ¿cómo sabes que va a la URL que crees que va?) mejor que mejor.

Luego si pasteas tu httpd.conf y tu .htaccess aplicable en www.refheap.com es un gran punto para que podamos echarte un cable de forma efectiva y rápida.

Algunos parece que no queráis ayuda o que penséis que somos detectives y nos mola ir preguntando para resolver el misterio xD


Por lo que he podido deducir, tiene toda la pinta de mala configuración en otra parte, porque con ese .htaccess no puede salir "articulo" mágicamente en la query.

1 respuesta
Weahl

#4 Perdona, es que como estoy super perdido con el htaccess no se que mas datos debería poner xD

A ver, aquí mi htaccess: https://www.refheap.com/paste/4620
El httpd.conf no he tocado nada y ni se cual es jaja.

A ver, trataré de explicarme mejor.

Tengo por ahí este enlace

<a href='articulos/numismatica'>Numismática</a>

Al hacerle clic debería llevarme a, en este caso, localhost/web/sections/coleccionismo/articulos.php

Y llega, pero el problema es que cuando llega a ese archivo e intenta cargar cualquier cosa, ya sea una imagen, un script o un stylesheet, los coge de esta ruta: localhost/web/articulos/css/coleccionismo/articulos.css

Por lo que todo sale deforme.

ARTICULOS.PHP

<!DOCTYPE html>
<link src='css/articulos.css' rel='stylesheet'>

Así es como cargo, por ejemplo, un css, que poniendo la ruta original (sin el rewrite mod) funciona perfectamente.

A ver si ahora es más entendible, perdona las molestias jeje

1 respuesta
elkaoD

#5 ah, coño, claro.

Si para el servidor web estás en "http://www.tuweb.com/articulos/numismatica", la ruta "css/articulos.css" es obviamente "http://www.tuweb.com/articulos/css/articulos.css".

Si no recuerdo mal "/css/articulos.css" te funcionará, o si no, pon la ruta completa.

2 respuestas
RaymaN

Pon esto dentro de la etiqueta head:

<base href="http://www.tuweb.com/" />

1 respuesta
Weahl

#6 #7 Ninguna de las dos funciona, poniéndole una barra delante de la ruta del css (css/coleccionismo/articulos.css) sale lo siguiente en la consola del firebug:

"NetworkError: 404 Not Found - http://localhost/css/coleccionismo/articulos.css"

Y antes salía, con la ruta css/coleccionismo/articulos.css:

"NetworkError: 404 Not Found - http://localhost/web/articulos/css/coleccionismo/articulos.css"

Probando lo de base sigue igual en este caso, el problema es el htaccess, que si pongo una barra en la ruta de la friendly URL (articulos/numismatica) toma lo primero como la ruta de la web y no sé por qué :S

F

Yo creo que la respuesta de #6 es correcta. Vamos, que estoy montando una web casera con Url amigables y mvc, me paso lo mismo y la forma de resolverla fue esa después de un par de pruebas.

/css/coleccionismo/articulos.css , mira que este la primera / , si la web la tienes dentro de una carpeta llamada web, pon /web/css/coleccionismo/articulos.css.

1 respuesta
Weahl

#9 Como dices me funciona, poniendo la ruta completa, pero hay alguna forma de evitarlo con htaccess o algo? He estado probando con la tag base pero nada.

Gracias a todos por la ayuda ;)

F

Que problema tienes con poner esa ruta?.

1 respuesta
Weahl

#11 Por simple comodidad jeje

Usuarios habituales