mod_rewrite pour l'alias d'un fichier de suffixe de type à l'autre
-
08-06-2019 - |
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
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.