Vous pouvez utiliser la Include
directive in httpd.conf
pour pouvoir conserver les redirections dans un autre fichier. Mais ce ne serait pas très efficace, car chaque demande devrait être vérifiée par rapport à de nombreuses expressions régulières. Un redémarrage du serveur serait également nécessaire après chaque modification du fichier.
Une meilleure façon pour autant de redirections serait d'utiliser la directive RewriteMap de type dbm
pour déclarer une carte des URI aux redirections. De cette façon, il sera efficace, car les recherches dbm sont très rapides, et après un changement dans la carte, vous n'aurez pas besoin de redémarrer un serveur, car il httpd
vérifie l'heure de modification du fichier de carte.
Une règle de réécriture ressemblerait à ceci (testé sur mon ordinateur Fedora 16):
RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
Et la carte dbm serait créée à partir d'une carte texte /etc/httpd/conf/redirects.txt
ressemblant à ceci:
/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/
en utilisant une commande
httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db
!=
et""
- j'ai corrigé mon exemple en une version fonctionnelle et testée maintenant.?
dans l'URL), mais c'est également possible . Comme c'est le cas maintenant, il suffit d'ajouter une chaîne de requête à rediriger, par exemplehttp://yourserver.com/foo?q=bar
, rediriger vershttp://serverfault.com/?q=bar
.RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
a donné une erreurRewriteMap dbm type db is invalid
. Mais quand je l'ai utilisé,RewriteMap redirects txt:/etc/httpd/conf/redirects.txt
cela a fonctionné. Je veux toujours aller de manière hachée comme vous l'avez expliqué au lieu de texte brut. Mais je n'ai pas pu trouver grand-chose sur l'erreur dbm. Merci de votre aide.J'écrirais un script qui génère un nouveau VHOST avec juste les liens de la liste.
la source