4 votes

Faire en sorte que le .htaccess obtienne dynamiquement RewriteBase

Selon l'endroit où j'installe mon ensemble de fichiers, il semble que RewriteBase semble devoir changer en conséquence si je l'installe dans un sous-répertoire plutôt qu'à la racine du www.

Pour mes fichiers de configuration, j'utilise quelque chose comme ce qui suit pour permettre aux administrateurs de modifier les paramètres en fonction de leur environnement de déploiement.

$yaml = file_exists($yamldir) ? Spyc::YAMLLoad($yamldir) : array();
$default = array(
  'hostname' => 'mydomain.com',
  'base_uri' => '/sub/',
  'mysql_host' => 'localhost',
  'mysql_username' => 'root',
  'mysql_password' => '',
  'schema_name' => 'schema1',
  'table_name' => 'table1'
);

$config = array_merge($default, $yaml);

Le config.yml est ensuite ignoré par SVN ou git afin de permettre une flexibilité maximale. Cela semble être la meilleure façon de procéder.

Existe-t-il un équivalent du fichier .htaccess, pour lire (ou mieux encore, analyser) un fichier de configuration qui peut ou non exister ?

Informations générales

Mes besoins en matière de .htaccess sont d'ailleurs assez simples dans ce cas :

RewriteEngine On
RewriteBase /sub

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [L]

Ce serait probablement mieux si j'utilisais un répertoire public de type Rails au lieu d'avoir une racine www effectivement "ouverte", mais je peux m'en occuper si nécessaire. La RewriteBase est-elle même nécessaire dans mon cas ? Je ne suis pas sûr qu'elle le soit. Même ainsi, je peux penser à des cas dans le futur où j'ai un .htaccess plus élaboré, où j'aurais du mal à trouver une solution de contournement pour RewriteBase (ou ai-je tort de penser cela aussi ?).

1voto

Giovanni Toraldo Points 2537

Vous devriez probablement utiliser un script personnalisé pour effectuer la réécriture : http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritemap - Programme de réécriture externe

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X