I have a web site with many virtual hosts and each registered with several domain names (ending in .org, .de), site1.mysite.de, site2.mysite.org
Then I have different templating systems based on several programming languages (perl and php) in use on the web server.
The Google Maps Api requires a unique Google Maps api key for each vhost.
I want to have something like a web-server wide variable $goomapkey that I can call from inside my code.
In PHP code, Now I have a kludgy case-analysis solution like
$domain = substr($_SERVER['SERVER_NAME'], -3);
if (".de" == $domain){
//if ("xxxxxx" eq substr($ENV{SERVER_NAME}, 0, 5)){
// $gookey = "ABQIAAA...";
//} else {
//site1.de
$gookey = "ABQIAAAA1Js...";
//}
} elseif ("dev" == substr($_SERVER['SERVER_NAME'], 0, 3)){
//dev.mysite.org
$gookey = "ABQIAAAA1JsSb...";
} else {
//www.mysite.org
$gookey = "ABQIAAAA1JsS...";
//TODO: Add more keys for each virtual host, for my.machinename.de, IP-address based URL, ...
}
… inside my php-based CMS. A non-ideal solution, because it is, php-only, and I still have to set it at several html templates inside the CMS, and there are too many cases.
I want the google maps api key to be set by the apache web server who examines the request *early in the request loop before any php page template code is constructed and evaluated.
-
is an environment variable a good solution?
-
which technology should be used to set the $goomapkey variable?
I’d prefer mod_perl2 Apache request handler, but the documentation is confusing (many API changes in the past ). Which Apache module could I use?
- Is there a built-in Apache module that does the same thing?
Surely this is a little overkill for only a few domains? I mean, you’ve obviously had to go through the process of applying for a key for each domain, why not just use each key in each project independently?
The most elegant solution would be to make the switch to Google Maps API v3, which no longer requires an API key.