2011-07-23 13 views
5

Estoy tratando de hacer que mod_rewrite sea la primera cadena de subdirectorio desde url para crear una funcionalidad similar a 'jsfiddle.net saved url's dentro de una clase/db. La secuencia de comandos funciona bien y la reescribe.mod_rewrite con Trailing Slash rompe las rutas CSS/IMG/SCRIPTS

p. Ej. url de

http://jsfiddle.net/RyEue/ 

Esto funciona bien (cargas todos los CSS, scripts, etc.):

http://www.domain.com/787HHJ2 

Esto es lo que he usado en el pasado que hace el truco.

El problema es cuando termina la URL con la última barra, script, css y otras rutas sueltas.

http://www.domain.com/787HHJ2/ 

escritura de reescritura:

DirectoryIndex index.php index.html 
Options +FollowSymlinks 
RewriteEngine On # Turn on the rewriting engine 
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{QUERY_STRING} !. 
RewriteRule ^.+/?$ index.php [QSA,L] 

No está seguro si esto tiene que ver con RewriteBase, he intentado varias maneras.

PS. Intenté establecer rutas en absoluto (por ejemplo, src = "/ img/theimage.jpg") sin suerte.

+0

La regla está bien. Por favor, active la corrección de errores de reescritura ('RewriteLogLevel 9') y compruebe el registro de reescritura para ver exactamente qué está sucediendo. – LazyOne

+0

@LazyOne, su derecho. Funciona. El problema es que rompe css, scripts paths. – Codex73

+1

He aclarado la pregunta. El problema es masivo con el css, scripts, imagenes y otros que se han roto usando el trailing /. – Codex73

Respuesta

5

1. Asegúrate de que tienes css/images/js etc vinculada relativa a la carpeta raíz (con barra inicial): /styles/main.css

2. Añadir uno de estos Ruls antes actual uno:

# do not touch files with .css/.js/.jpg etc extensions 
RewriteRule \.(css|js|jpg|png|gif)$ - [L] 

o

# do not touch any resources in images/css/js folders 
RewriteRule ^(images|css|js)/ - [L] 

3. Borre las cachés del navegador y reinícielas (a veces, el navegador puede mostrar la página/recurso en caché cuando se reparó la regla de reescritura, lo que genera mucha confusión).

+0

Con la respuesta anterior, pude resolver el problema. Una combinación de rutas relativas a la raíz más la configuración de hosts virtuales locales permitieron que todo funcionara perfectamente. – Codex73

0

Intenta escapar

RewriteRule ^.+\/?$ index.php [QSA,L]