2008-08-12 11 views
3

Ich hoffe, ich kann das klar genug erklären, aber wenn nicht lassen Sie mich wissen, und ich werde versuchen, zu klären.mod_rewrite alias eine Datei Suffix-Typ zu einem anderen

Ich entwickle gerade eine Website mit ColdFusion und habe eine mod_rewrite-Regel, damit es so aussieht, als ob die Seite PHP verwendet. Alle Anfragen für index.php werden von index.cfm (die Regelkarten * .php nach * .cfm) verarbeitet.

Das funktioniert super - so weit, so gut. Das Problem ist, dass ich einen 404-Statuscode zurückgeben möchte, wenn index.cfm (oder eine andere ColdFusion-Seite) direkt angefordert wird.

Wenn ich versuche, den Zugriff auf * .cfm-Dateien mit mod_rewrite zu blockieren, gibt es auch 404 für Anfragen an * .php zurück.

Ich denke, ich könnte meine Apache Config ändern müssen, anstatt verwenden .htaccess

Antwort

1

können Sie die S Flag verwenden, um die 404 Regel, wie diese überspringen:

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] 

Wenn Sie auch die Alias Option verwenden, dann sollten Sie auch die PT Flag hinzuzufügen. Einzelheiten finden Sie unter mod_rewrite documentation.

0

Eintrag Kommentare zu den Regeln, die Sie bereits als Ausgangspunkt haben, damit die Menschen müssen es nicht neu, Ihnen zu helfen.

Ich würde vorschlagen, [L] auf die Regel zu prüfen, die .php zu .cfm-Dateien als die erste Sache zu versuchen.

0

Sie müssen zwei verschiedene Gruppen von Rewrite-Regeln verwenden, eine für .php, die andere für .chm und diese mit RewriteCond% {REQUEST_FILENAME} gegenseitig ausschließen. Und nutzen Sie die Flagge [L] wie von jj33 vorgeschlagen.

Sie können Ihre Regeln in .htaccess behalten.