Frage

Ich hoffe, ich kann das klar genug erklären, aber wenn nicht, lassen Sie es mich wissen und ich werde versuchen, es zu klären.

Ich entwickle derzeit eine Site mit ColdFusion und habe eine mod_rewrite-Regel eingerichtet, damit es so aussieht, als würde die Site PHP verwenden.Alle Anfragen für index.php werden von index.cfm verarbeitet (die Regel ordnet *.php *.cfm zu).

Das funktioniert großartig – soweit so gut.Das Problem besteht darin, dass ich einen 404-Statuscode zurückgeben möchte, wenn index.cfm (oder eine beliebige ColdFusion-Seite) direkt angefordert wird.

Wenn ich versuche, den Zugriff auf *.cfm-Dateien mit mod_rewrite zu blockieren, wird bei Anfragen an *.php auch eine 404 zurückgegeben.

Ich denke, ich muss möglicherweise meine Apache-Konfiguration ändern, anstatt .htaccess zu verwenden

War es hilfreich?

Lösung

Du kannst den ... benutzen S Flagge zum Überspringen 404 Regel, etwa so:

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 das verwenden Alias Option, dann sollten Sie auch die hinzufügen PT Flagge.Siehe die mod_rewrite-Dokumentation für Details.

Andere Tipps

Veröffentlichen Sie die Regeln, die Sie bereits haben, als Ausgangspunkt, damit andere sie nicht neu erstellen müssen, um Ihnen zu helfen.

Als erstes würde ich vorschlagen, [L] anhand der Regel zu testen, die .php auf .cfm-Dateien zuordnet.

Sie müssen zwei unterschiedliche Gruppen von Rewrite-Regeln verwenden, eine für .php, die andere für .chm, und sie 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top