Disabilitare le regole di riscrittura di WordPress per una cartella e il suo contenuto tramite htaccess
Ho un'altra applicazione PHP in una cartella chiamata app
all'interno della mia installazione WordPress, e ho bisogno di disabilitare tutte le regole di riscrittura WordPress per quella cartella e il suo contenuto. In modo che quando vado su www.domain.com/app
ottenga la pagina della mia applicazione, invece della pagina 404 standard di WordPress.
So che queste sono regole di riscrittura apache di base, ho cercato una soluzione e ho provato alcune cose che non hanno funzionato bene.
Quasi dimenticavo, ho bisogno di farlo solo modificando il file htaccess di WordPress. E l'applicazione ha il suo proprio file htaccess.
Grazie.
MODIFICA: contenuto htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
MODIFICA: htaccess dell'Applicazione
DirectoryIndex index.php
<FilesMatch "\.(php|inc)$">
Order allow,deny
deny from all
</FilesMatch>
<FilesMatch "(index.php|download.php)$">
Order allow,deny
allow from all
</FilesMatch>
Queste regole non fanno molto, fondamentalmente negano l'accesso a tutti i file di tipo PHP
e INC
, eccetto index.php
e download.php
. Che sono quelli a cui l'utente deve accedere, il resto sono classi utilizzate internamente da PHP
.
MODIFICA 3: Risoluzione:
Come è emerso, non c'era nulla di sbagliato con l'htaccess
di WordPress o l'applicazione, dopo aver attivato la segnalazione degli errori sul server di hosting remoto, PHP ha segnalato un file corrotto, una volta sostituito, tutto ha iniziato a funzionare correttamente. I miei ringraziamenti a Wietse Venema per il suggerimento.

Il file .htaccess di default supporta già il comportamento che desideri:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
La magia sta nelle righe che iniziano con RewriteCond. Queste istruiscono Apache ad applicare la regola RewriteRule . /index.php [L]
(che significa "qualsiasi URL andrà a index.php"), solo quando l'URL non è un file esistente !-f
o una directory esistente !-d
.
Quindi questo dovrebbe funzionare di default. Le regole di riscrittura di WordPress non si applicano quando provi a visitare un file già esistente.
