Question

J'espère que je peut l'expliquer assez clairement, mais si pas, laissez-moi savoir et je vais essayer de clarifier.

Je suis en train de développer un site à l'aide de ColdFusion et ont un mod_rewrite règle en place pour faire croire que le site est à l'aide de PHP.Pour toute demande de index.php de traiter par l'indice.cfm (la règle de cartes *.php *.cfm).

Cela fonctionne très bien - très bien.Le problème est que je souhaite retourner un code d'état 404 si l'indice.cfm (ou une page ColdFusion) est demandée directement.

Si j'essaie de bloquer l'accès à *.cfm fichiers à l'aide de mod_rewrite elle aussi renvoie une erreur 404 pour les demandes de *.php.

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

Était-ce utile?

La solution

Vous pouvez utiliser l' S drapeau de sauter le 404 la règle, 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 êtes également à l'aide de la Alias option, alors vous devez également ajouter le PT le drapeau.Voir la mod_rewrite documentation pour plus de détails.

Autres conseils

Post les règles que vous avez déjà comme un point de départ afin que les gens n'ont pas à recréer pour vous aider.

Je suggère de tests [L] sur la règle de cartes .php pour .cfm fichiers que la première chose à essayer.

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

Vous pouvez garder vos règles .htaccess.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top