Problema con le sottodirectory in .htaccess di Wordpress
Sto avendo problemi con la mia installazione di Wordpress che non mi permette di accedere alle sottodirectory, in particolare a un'installazione di CodeIgniter su mydomain.com/codeigniter. So che tecnicamente dovrebbe funzionare senza problemi e riconoscere le cartelle così come vengono create. Tuttavia, questo non sta accadendo. Sospetto che abbia a che fare con un plugin, ma ho provato a disabilitarli tutti e il problema persiste (mi reindirizza alla pagina 404 di Wordpress).
Nel frattempo ho trovato una soluzione alternativa. Se creo un sottodominio, qualcosa cambia e tutto funziona come dovrebbe, accedendo alla cartella sia tramite il percorso diretto che tramite il nome del sottodominio.
Qualche aiuto? Ho provato diverse modifiche ai file .htaccess in entrambe le directory, ma cambiarli non produce alcun effetto.
Aggiornamento: Ecco il file .htaccess di Wordpress nella cartella root:
DirectoryIndex index.php index.htm index.html
AddHandler application/x-httpd-php52 .php .php5 .php4 .php
# INIZIO WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?codeigniter/
RewriteRule . /index.php [L]
</IfModule>
# FINE WordPress
E il file .htaccess di CodeIgniter nella sottodirectory /codeigniter/.
DirectoryIndex index.php index.htm index.html
AddHandler application/x-httpd-php52 .php .php5 .php4 .php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /codeigniter
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>
Anche se i file statici e le directory funzionano con un'installazione di WordPress con mod_rewrite nella root del server, potresti aver bisogno di escludere la tua sottodirectory CodeIgniter da quella configurazione di mod_rewrite.
Puoi farlo inserendo un file .htaccess aggiuntivo nella directory di CodeIgniter e disabilitando mod_rewrite al suo interno:
<IfModule mod_rewrite.c>
RewriteEngine off
</IfModule>
Articoli correlati: apache - Disabilita mod_rewrite per sottodirectory
Normalmente questo risolve il problema. Ma può essere meno banale nel caso in cui quella sottodirectory necessiti di una configurazione mod_rewrite propria (come richiesto da alcuni framework PHP).
Per capire come funziona la configurazione di Apache, consulta File di configurazione (Manuale Apache) e Direttiva AllowOverride (Manuale Apache).

Ok, funziona! L'ho testato senza il sottodominio applicato e sembra funzionare, ma vedrò nel tempo se Wordpress decide di sovrascrivere nuovamente le cose prima di eliminarlo. :)

@Jeff Wain per prevenire ciò, basta inserirlo in un file .htaccess autonomo (ad esempio nella sottodirectory). Wordpress modificherà solo il file .htaccess nella directory di installazione. Puoi inoltre inserirlo nella configurazione del server apache. Anche quello non verrà sovrascritto da Wordpress.
