.htaccess excluyendo la reescritura de css y las imágenes

Tengo algunos problemas con la reescritura de URL-s

mi .htacces de archivo:

RewriteEngine On
RewriteBase /bsc/
RewriteRule ^(.+/?)$ index.php?url=$1 [NC,QSA,L]

mi estructura de archivos y carpetas:

bsc/
---|.htaccess
---|index.php
---|css/
-------|style.css
---|images/
----------|logo.png
----------|image1.jpg
----------|image2.jpg
---|controller/
--------------|bootstrap.php
...

Cuando tengo siguiente enlace

localhost/bsc/page.html

De mi css trabajo o puedo ir a trabajar.
Pero cuando he siguientes enlaces:

localhost/bsc/page/subpage.html
localhost/bsc/page/subpage/subsubpage.html
localhost/bsc/page/subpage/subsubpage/subsubsubpage.html

Que no se puede entrar css para trabajar, css, es redirigido a

localhost/bsc/page/css/style.css
localhost/bsc/page/subpage/css/style.css
localhost/bsc/page/subpage/subsubpage/css/style.css

Segunda parte del problema es que mis enlaces no tienen la misma extensiones o de cualquier extensión.
Siguientes situaciones son posibles:

localhost/bsc/page/subpage
localhost/bsc/page/subpage/
localhost/bsc/page/subpage.php
localhost/bsc/page/subpage.html
localhost/bsc/page/subpage/subsubpage
localhost/bsc/page/subpage/subsubpage/
localhost/bsc/page/subpage/subsubpage.php
localhost/bsc/page/subpage/subsubpage.html
...

Ahora se define la regla de reescritura es trabajar para diferentes enlaces, pero cómo agregar excluidos de la regla de css y las imágenes?


Puedo obtener la siguiente .htaccess que el trabajo de css para todos mis condiciones:

RewriteEngine On
RewriteBase /bsc/
RewriteCond %{REQUEST_FILENAME} !\.css
RewriteRule ^(.+/?)$ index.php?url=$1 [NC,QSA,L]

Después de leer los comentarios y alguna vez que me junto .htaccess con no tan malos resultados:

RewriteEngine On
RewriteBase /bsc/
RewriteRule ^(.+/?)?(/|\.htm|\.php|\.html|/[^.]*)$ index.php?url=$1 [NC,QSA,L]

y mi link es:

<link rel="stylesheet" type="text/css" href="/bsc/css/style.css" />

Ahora es sólo una condición en la URL cuando no puedo conseguir el correcto solicitud de dirección URL. Siguiente URL no recibir último parámetro:

localhost/bsc/page/subpage
localhost/bsc/page/subpage/subsubpage

No recibo subpágina o subsubpage, otras condiciones de trabajo. En esta situación y apache .htaccess bandeja para encontrar el archivo o carpeta ….

Es posible añadir los que faltan condición o es posible hacer algunos más simple regla de reescritura o más reglas

InformationsquelleAutor Miroslav | 2012-01-14

3 Kommentare

  1. 9

    Probablemente usted sólo tiene que utilizar una dirección url absoluta para css,

    es decir,

    <link rel="stylesheet" type="text/css" href="/css/style.css">

    lugar de

    <link rel="stylesheet" type="text/css" href="css/style.css">

    Poner una barra en frente de las fuerzas a la «raíz» de la dirección url, por lo que es consistente a lo largo de subpáginas.

    • Falta la barra » / » es ayudado.
    • me alegra saber 🙂 veo que se acaba de unir, si pudieras elegir la respuesta, como la respuesta correcta, se puede obtener esta pregunta cerrada :).. Sólo para ser adecuada..
    • Ahora es el 95% de las soluciones de hecho y tengo que esperar 8 horas para poner mi respuesta para mí, No será nuevo .htaccess y la falta de un solo estado.
    • esto no está relacionado respuesta porque htaccess es totalmente apache relacionados pero este código es el navegador relacionados con sólo hacer una simple petición de url no puede en efecto .reglas htaccess
    • en realidad, su pregunta no especifica htaccess específicamente, pero era lo que él creía ser la causa del problema. «No me puedo meter css para trabajar», era su problema, y mi código proporcionado una solución por lo tanto lo que es la respuesta correcta…
  2. 4

    He aplicado la reescritura de url a un proyecto en el núcleo de php. Yo se enfrentó al mismo problema. css, Js e imágenes no estaban cargados. He utilizado este y trabajó para mí. Fuente

    # Allow any files or directories that exist to be displayed directly
    RewriteCond ${REQUEST_URI} ^.+$
    RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -l
    RewriteRule ^ - [L]
  3. 0
    1. Agregar la condición RewriteCond %{REQUEST_FILENAME} !-f antes de su rewriterule.
    2. Debe incluir css con src="/css/style.css" y NO src="css/style.css" (nota la falta iniciar /.
    • RewriteCond %{REQUEST_FILENAME} !-f, I de la bandeja para evitar esto
    • Por qué tratar de evitar que la línea?
    • Si yo n no se equivocó %{REQUEST_FILENAME} !-f permitirá el acceso directo a todos los archivos en otras palabras – no va a reescribir la solicitud si el archivo existente en la ruta de la solicitud. Pero el cambio de condición !-f !\.css va a permitir explícitamente los archivos CSS y puedo hacer mi excepciones agregar más condiciones de imágenes o algún otro documento de los archivos.
    • Yo habitualmente sólo tener javascript / css / imagen / otros archivos multimedia en la doc de raíz, cualquier archivo que no debería tener acceso directo… simplemente está fuera de la doc de la raíz, que no es directamente accesible. De esa manera, esta afirmación sólo funciona sin problemas.
    • Estoy familiarizado con el método de los archivos que se encuentran fuera del doc de la raíz, pero actualmente estoy trabajando en localhost en fase de desarrollo. Por supuesto, más adelante, cuando termine me va a reubicar mis archivos de doc de la raíz.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein