2009-05-27 4 views
0

J'ai un fichier foo.bar.1 sur mon serveur et quand j'essaye d'y accéder à partir d'un navigateur (firefox) je reçois un popup qui dit "Vous avez choisi d'ouvrir foo .bar.1 qui est un: 1 fichier ... Que devrait faire Firefox avec ce fichier ... ". Si je crée un lien symbolique, foo.dat, je peux y accéder très bien; le contenu s'affiche dans le navigateur comme je l'espère.mod_rewrite vs symlink: le navigateur n'est pas dupe

Mon problème est que je ne veux pas créer des liens symboliques pour tous ces fichiers, je veux utiliser une règle de mod_rewrite, comme

RewriteRule ^([^/]+)\.dat$ $1.bar.1 

Mais cela ne se comporte pas comme le lien symbolique. Il donne le même popup (mais, étrangement, il dit maintenant "Vous avez choisi d'ouvrir foo.dat qui est un: fichier DAT ...".

Comment puis-je faire la règle de réécriture de telle sorte que le navigateur est trompé ? en le traitant comme un fichier .dat normale, comme cela est accompli par le lien symbolique

+0

La réponse acceptée résout la question originale. Je suis toujours curieux de savoir ce qui ne va pas avec l'autre réponse: en utilisant le drapeau T dans la règle de réécriture. – dreeves

Répondre

1

Rechercher dans l'argument [T] à la directive RewriteRule:

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

Lorsque vous faites le lien symbolique, Apache pense qu'il est au service d'un fichier .dat, alors que lorsque vous utilisez mod_rewrite, Apache pense toujours qu'il est au service d'une .1 fichier. Cela apparaît dans l'en-tête Content-type servi au navigateur.

+0

Merci! Cela semble fonctionner, mais j'ai ajouté [T = text/plain] à aucun effet. Non, je suis encore plus confus ... – dreeves