CSS no carga después de redirigir con la regla de reescritura htaccess

Tengo la siguiente Mano abreviada para una url de perfil de usuario

RewriteRule ^(\w+)/?$ ./profile.php?name_of_user=$1 

El sitio está diseñado con el archivo css apropiado cuando lo hago site.com/name_of_user

pero no cuando lo hago site.com/name_of_user/

Aunque la redirección está en la página correcta …

¡Ayuda es apreciada!

La forma más fácil de solucionar esto es especificar la ruta completa a su archivo CSS en el del archivo HTML.

Si su regla mod_rewrite está modificando la ruta a donde se encuentra su archivo CSS, también querrá colocar esto antes de su RewriteRule :

 RewriteCond %{REQUEST_FILENAME} !-f 

Esto asegura que la solicitud no coincida con un archivo antes de volver a escribirlo.

vincula los archivos css relativos al ejemplo del directorio raíz:

  

Tuve el mismo problema y encontré la solución más fácil y práctica.

  

Es súper limpio y fácil de usar.

Intente establecer la base correcta en la sección del encabezado de sus documentos html:

    

Entonces, cualquier barra inclinada adicional (/) en sus reglas .htaccess no cambiará la ruta de las fonts externas en sus documentos html. La siguiente regla

 RewriteEngine On RewriteBase / RewriteRule ^(\w+)/?$ ./profile.php?name_of_user=$1 

no hará este comportamiento con en el del documento. Funciona bien, especialmente para estructuras de archivos de sitios relativos.

Cuando la URL de su página es example.com/name_of_user/ , la carga de recursos css / js / images puede causar problemas si su página HTML está utilizando rutas relativas para estos recursos. Es porque el navegador resuelve las URL de recursos usando la URL actual.

Entonces, por ejemplo, si una etiqueta de estilo es:

  

y su URL de página actual es:

 http://example.com/name_of_user/ 

Entonces el navegador resolverá css URL como example.com/name_of_user/static/style.css lugar de example.com/static/style.css . Esto causará 404 para las URL de recursos y su página se mostrará sin ningún estilo, scripts e imágenes.

Puede resolver este problema utilizando una de las siguientes formas:

  1. Use la ruta absoluta en su css, js, archivos de imágenes en lugar de uno relativo. Lo que significa que debe asegurarse de que la ruta de estos archivos comience con http:// o con una barra inclinada / .

  2. De lo contrario, puede agregar esto justo debajo de la sección del HTML de su página:

      

para que cada URL relativa se resuelva desde esa URL base y no desde la URL de la página actual.

 RewriteCond %{REQUEST_FILENAME} !-f 

Esto funciona como un regalo. Originalmente tuve problemas incluso con dar enlaces absolutos. Gracias y +1 a Steve Lewis.

Prueba esto:

  RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.(gif|jpg|png|jpeg|css|js|swf)$ /public/$1.$2 [L,NC] # Removes index.php from ExpressionEngine URLs RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L,QSA]  

La forma más fácil es usar , y esto debería ser poco después de la etiqueta inicial de HTML. La URL del sitio debe comenzar con http o https; si está en el host local, entonces use http, por ejemplo

 http://localhost/road/ 

He tenido lo que parece ser el mismo problema. Intenté redirigir desde un sitio del formulario: http://www.foo/category/details.

Encontré que la barra después de “categoría” impidió que se cargaran tanto el CSS como las imágenes.

La causa es que la redirección predeterminada pasa la URL original al navegador. Esto se puede ver desde un trazo de JScript en window.location.pathname. La solución es simplemente usar un indicador [R] en la regla de reescritura.

Cuando utiliza este site.com/name_of_user/ , cambia el directorio de trabajo de su sitio de root a name_of_user , por lo tanto, la ruta relativa de cada archivo o enlace en la página solicitada se convertiría en /name_of_user/ lugar de / .

Para solucionar esto, necesita agregar una regla adicional a .htaccess:

 RewriteRule ^name_of_user/(.*)?$ $1 

Simplemente agregue la ruta de base después de la etiqueta de cabecera de apertura. Por ejemplo:

  

Tuve el mismo problema y lo resolví con el siguiente código. No es la mejor solución, pero funciona.

 RewriteRule ^(something/)$ something [R] RewriteRule ^(something)$ index.php?page=$1 [L]