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]