mod_rewrite alias un suffisso del file di tipo diverso
-
08-06-2019 - |
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
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.