2010-06-04 4 views
0

Je voudrais apache pour rendre% {DOCUMENT_ROOT} /cache/%1.htmlComment Réécrire fichier statique que si elle existe (.htaccess)

si% 1 est le chemin de la requête. Tout mon site se trouve dans un sous-répertoire appelé cache_test et j'ai le fichier .htaccess suivant. Mais la RewriteRule en ligne 7 et 11 ne correspond pas à :(.

Nous vous remercions d'avance pour toute avance! Cordialement, Nicklas

1 RewriteEngine On 
2 RewriteBase  /cache_test/ 
3 
4 RewriteCond  %{THE_REQUEST} ^(GET|HEAD) 
5 RewriteCond  %{REQUEST_URI} ^/([^.]+)$ 
6 RewriteCond  %{DOCUMENT_ROOT}/cache/%1.html -f 
7 RewriteRule  ^/[^.]+$ /cache/%1.html [QSA,L] 
8 
9 RewriteCond  %{THE_REQUEST} ^(GET|HEAD) 
10 RewriteCond  %{DOCUMENT_ROOT}/cache/index.html -f 
11 RewriteRule  ^/$ /cache/index.html [QSA,L] 
12 
13 RewriteRule  (.*/cache_test)$ $1/ 
14 RewriteRule  ^$ index.html [QSA] 
15 RewriteRule  ^([^.]+)$ $1.html [QSA] 
16 RewriteCond  %{REQUEST_FILENAME} !-f 
17 RewriteRule  ^(.*)$ dispatch.fcgi [QSA,L] 

Répondre

0

RewriteBase + DOCUMENT_ROOT ==> troubles ...

Je ne suis pas en mesure de tester en ce moment, vous pouvez vérifier wether cela fonctionne, le changement:

6 RewriteCond  %{DOCUMENT_ROOT}/cache/%1.html -f 

pour:

6 RewriteCond  ../cache/%1.html -f 

Et sinon, je ne vois pas d'autre choix que d'oublier les avantages de RewriteBase & baisse que.

Sur une note de côté, pourquoi avez-vous besoin de cela?

RewriteRule  ^$ index.html [QSA] 
+0

Merci pour votre réponse Wrikken! J'ai essayé d'utiliser le chemin relatif comme vous l'avez indiqué et cela n'a pas fonctionné. À propos de la ligne "^ $ index.html [QSA]", je ne suis pas sûr. Je dois avouer que mod_rewrite est loin de mon côté fort. Les lignes 13 à 17 permettent à Apache de tout router vers les rails (via fcgi). Avez-vous des conseils sur la façon dont le fichier pourrait ressembler après la conversion de RewriteBase? Merci, et vous réservoir à nouveau à l'avance. Cordialement, Nicklas –

+0

Si vous n'ajoutez pas de base de réécriture (http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritebase), la plupart de vos modèles doivent correspondre au cache_test chemin à l'avant (^ /? cache_test /) – Wrikken