Domanda

Spero di essere in grado di spiegare chiaramente abbastanza, ma se non è così fatemelo sapere e cercherò di chiarire.

Al momento sto sviluppando un sito utilizzando ColdFusion e hanno un mod_rewrite regola per far sembrare che il sito utilizza PHP.Eventuali richieste di index.php di elaborati dall'indice.cfm (la regola mappe *.php *.cfm).

Questa grande opera - così lontano, così buono.Il problema è che io voglio restituire un codice di stato 404 se l'indice.cfm (o di qualsiasi pagina ColdFusion), è richiesta direttamente.

Se provo a bloccare l'accesso a *.cfm file che utilizza mod_rewrite anche restituisce un 404 per le richieste di *.php.

Non ho potuto cambiare la mia configurazione di Apache, piuttosto che l'uso .htaccess

È stato utile?

Soluzione

È possibile utilizzare il S bandiera a saltare la 404 la regola, come questo:

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]

Se si utilizza anche l' Alias opzione, quindi è necessario aggiungere anche il PT la bandiera.Vedere la mod_rewrite documentazione per ulteriori dettagli.

Altri suggerimenti

Post le regole che hai già come un punto di partenza con le persone non devono ricrearla per aiutarvi.

Vorrei suggerire di test [L] sulla regola che le mappe .php .cfm file come la prima cosa da provare.

È necessario utilizzare due distinti gruppi di regole di riscrittura, uno per .php, l'altro per .chm e li rendono reciprocamente esclusive con RewriteCond %{REQUEST_FILENAME}.E di utilizzare la bandiera [L] come suggerito da jj33.

È possibile mantenere le vostre regole .htaccess.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top