2008-08-12 13 views
3

J'espère que je peux expliquer cela assez clairement, mais si ce n'est pas le cas, faites-le moi savoir et je vais essayer de clarifier.mod_rewrite à alias un type de suffixe de fichier à l'autre

Je suis actuellement en train de développer un site utilisant ColdFusion et j'ai une règle mod_rewrite en place pour donner l'impression que le site utilise PHP. Toutes les demandes de index.php sont traitées par index.cfm (la règle associe * .php à * .cfm).

Cela fonctionne très bien - jusqu'ici, tout va bien. Le problème est que je veux retourner un code d'état 404 si index.cfm (ou n'importe quelle page ColdFusion) est demandé directement.

Si j'essaie de bloquer l'accès aux fichiers * .cfm en utilisant mod_rewrite, il renvoie également un 404 pour les demandes à * .php.

Je me dis que je pourrais avoir à changer ma config Apache plutôt que d'utiliser .htaccess

Répondre

1

Vous pouvez utiliser le drapeau S sauter la règle 404, comme ceci:

RewriteEngine on 

# Do not separate these two rules so long as the first has S=1 
RewriteRule (.*)\.php$ $1.cfm [S=1] 
RewriteRule \.cfm$ - [R=404] 

Si vous utilisez également l'option Alias alors vous devriez également ajouter le drapeau PT. Voir le mod_rewrite documentation pour plus de détails.

0

Publier les règles que vous avez déjà comme point de départ pour que les gens ne doivent pas recréer pour vous aider.

Je suggère de tester [L] sur la règle qui associe les fichiers .php aux fichiers .cfm comme la première chose à essayer.

0

Vous devez utiliser deux groupes distincts de règles de réécriture, l'un pour .php, l'autre pour .chm et les rendre mutuellement exclusifs avec RewriteCond% {REQUEST_FILENAME}. Et faites usage du drapeau [L] comme suggéré par jj33.

Vous pouvez conserver vos règles dans .htaccess.