5 votes

Le mod_rewrite avec Trailing Slash casse les chemins CSS/IMG/scripts.

J'essaie de faire en sorte que mod_rewrite la première chaîne de sous-répertoire à partir de l'url afin de créer une fonctionnalité similaire à celle de 'jsfiddle.net saved url's au sein d'une classe/db. Le script fonctionne bien et effectue la réécriture.

par exemple de l'url

http://jsfiddle.net/RyEue/

Cela fonctionne bien (charge toutes les css, scripts, etc.) :

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

Voici ce que j'ai utilisé dans le passé et qui fait l'affaire.

Le problème est que lorsque l'URL se termine par une dernière barre oblique, script, css et autres perdent le chemin.

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

réécrire le script :

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]

Je ne sais pas si cela a un rapport avec Rewritebase, j'ai essayé plusieurs méthodes.

PS. J'ai essayé de définir des chemins absolus (par exemple src="/img/theimage.jpg") sans succès.

5voto

LazyOne Points 25070

1. Assurez-vous que les fichiers css/images/js etc. sont liés au dossier racine (avec un slash en tête) : /styles/main.css

2. Ajoutez un de ces ruls avant le rul actuel :

# 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. Videz les caches du navigateur et redémarrez (parfois, le navigateur peut afficher une page/ressource en cache lorsque la règle de réécriture a été fixée, ce qui entraîne une grande confusion).

0voto

marc Points 4070

Essayez de vous échapper

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X