Reindirizza a 404 se l'estensione .php è richiesta nell'URL

Al momento ho tutte le mie pagine che funzionano senza le loro estensioni .php usando mod_rewrite. Ad esempio:

www.mywebsite.com/noextension 

Tuttavia, come faccio a redirect i miei utenti a una pagina 404 se decidono di aggiungere l'estensione .php all'url in questo modo?

 www.mywebsite.com/noextension.php 

Il mio htaccess sembra così sin qui:

 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^([a-zA-Z0-9]+)(/)?$ $1.php RewriteRule ^forums/([a-zA-Z0-9]+)(/)?$ forums.php?category=$1 [NC] 

Ho provato cose come questa RewriteRule \.php$ - [R=404] , tuttavia, sono solo 404 each singola pagina in cui vado. Presumo che potrei wherer usare qualcosa come REQUEST_URI per fare quello che sto chiedendo.

Cosa suggerite voi ragazzi che aggiungo? Grazie.

Prova queste righe (posiziona sopra quelle che hai già):

 RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^(.+)\.php - [F,L] 

Questa regola bloccherà (403 errori) l'accesso diretto a ANY .php file (ma verrà path attraverso gli URL già riscritti, quando la regola passa alla successiva iterazione).

TBH Non sono sicuro al 100% che funzioni (dipende dalla tua configuration di Apache) … ma considerando che hai v2.2.x dovrebbe (funziona bene sul mio 2.2.17).


AGGIORNAMENTO: Per "la pagina iniziale dei miei siti web senza / index a 404" aggiungere questa row prima della regola precedente:

 RewriteRule ^$ /index.php [QSA,L]