Elucubrato da saibal
Addì 9 aprile 2010

Cartella wp-admin, file .htaccess ed errore 404
Ultima novità in casa Wordpress, almeno nel ramo 2.8: se il vostro blog è installato nella root del server e provate a proteggere la cartella wp-admin con un file .htaccess, l’amministrazione non sarà più raggiungibile. Riceverete un errore 404 (pagina non trovata).
Dopo aver penato un po’ di tempo sono riuscito a venirne a capo.
Di base Wordpress utilizza regole di rewrite interne (ossia quelle schiantate nel database). Queste stesse regole non tengono in considerazione eventuali .htaccess inseriti in cartelle diverse dalla root del sito.
Per risolvere è necessario che il file .htaccess primario (quello utilizzato da Wordpress appunto) abbia anche le seguenti direttive:
1 2 3
ErrorDocument 400 /cartella/pagina-errore.htm ErrorDocument 401 /cartella/pagina-errore.htm ErrorDocument 404 /cartella/pagina-errore.htm
Il file pagina-errore.html, ovviamente, deve esistere sul server.
Se proprio vogliamo essere precisi, anche se è non fondamentale, possiamo aggiungere altri codici di errore personalizzati:
1 2 3
ErrorDocument 402 /cartella/pagina-errore.htm ErrorDocument 403 /cartella/pagina-errore.htm ErrorDocument 500 /cartella/pagina-errore.htm
Quindi avremo un file .htaccess simile a questo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
ErrorDocument 400 /cartella/pagina-errore.htm ErrorDocument 401 /cartella/pagina-errore.htm ErrorDocument 402 /cartella/pagina-errore.htm ErrorDocument 403 /cartella/pagina-errore.htm ErrorDocument 404 /cartella/pagina-errore.htm ErrorDocument 500 /cartella/pagina-errore.htm # BEGIN WORDPRESS <IfModule mod_rewrite.c> RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Fatto questo possiamo creare la classica accoppiata .htaccess/.htpasswd da inserire nella cartella wp-admin per aggiungere un ulteriore livello di sicurezza.
Da notare un particolare: in alcune situazioni, quando ad esempio un utente non ha inserito la propria email nel form dei commenti, la pagina pubblica di Wordpress richiama un file .css presente nell’amministrazione. Per evitare che agli utenti venga mostrata la maschera di accesso riservato possiamo creare l’.htaccess in wp-admin in questa maniera:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
AuthType Basic AuthName "Accesso riservato" AuthUserFile /path/to/.htpasswd AuthGroupFile /dev/null Order allow,deny Satisfy any <limit GET POST> require valid-user </limit> <FilesMatch "\.(css|js|gif|png)$"> Allow from All </FilesMatch>
Con queste righe di codice, in pratica, blocchiamo tutti i file tranne quelli con estensione .css, .js, .gif e .png (per i quali non verrà richiesta autenticazione).
Grande Lorenzone!