Con questa nuova versione del mio sito, che fa parecchio uso del mod_rewrite, ho trovato stressante dover ogni volta modificare l'.htaccess su AV rispetto a quello che ho in locale per il RewriteBase e per l'abilitazione di PHP5. Così ho scritto una funzione PHP che fa tutto questo in automatico. Ho pensato che a qualcuno potrebbe servire, così eccola qui:
Codice PHP:
<?php
function altervista_fixes()
{
$host = explode('.', $_SERVER['HTTP_HOST']);
$host = $host[count($host) - 2];
if(file_exists('.htaccess') && $host == 'altervista')
{
$contents = file_get_contents('.htaccess');
$contents2 = $contents;
if(strpos($contents, 'RewriteBase /') === false && strpos($contents, 'RewriteEngine On') !== false)
$contents2 = str_replace('RewriteEngine On', "RewriteEngine On\nRewriteBase /", $contents2);
if(strpos($contents, 'AddHandler av-php5 .php') === false)
$contents2 = $contents . "\n\n# Enabling PHP5\nAddHandler av-php5 .php";
unlink('.htaccess');
$fp = fopen('.htaccess', 'a+');
fwrite($fp, $contents2);
fclose($fp);
if($contents != $contents2)
header("Location: {$_SERVER['PHP_SELF']}");
}
}
?>
Io vi consiglio di chiamarla prima di ogni altra cosa, perché in questa maniera può abilitare PHP5 prima che qualunque altra classe non compatibile con PHP4 venga eseguita. Praticamente si occupa di aggiungere (se non ci sono) le opportune stringhe RewriteBase / (solo se trova RewriteEngine On) e l'handler per PHP5. Poi controlla se sono state apportate delle modifiche. Se sì effettua il refresh della pagina per dare modo al server di caricare il nuovo .htaccess.
Non c'è bisogno di inserire la funzione solo nella versione online del nostro sito, perché si occupa automaticamente di controllare se il sito sta su AlterVista. Se non lo è non fa niente.
Fatene un buon uso!