So lange eine Webseite noch nicht online ist, sollte sie einen 'noindex, nofollow'-Meta-Tag haben. Das gilt natürlich auch für Entwicklungs- und Stagingumgebungen, sofern diese von außen erreichbar sind. Das unten stehende Snippet sorgt dafür, dass der Tag auf der produktiven Seite verschwindet.
<?php
/*
* Snippet "set_noindex_on_dev_subdomain"
*
* Returns <meta name="robots" content="noindex, nofollow" />
* if a subdomain equals a certain value (like "develop" or "new"),
* or a domain equals a defined domain.tld ("mydevserver.com").
*
* This snippet only works on subdomains. If the sites URI has no subdomain,
* the snippet will exit disregarding any settings.
* This is to make sure, your production site is not ignored by search engines...
*
* Properties:
* excludesubdom = Optional, additional subdomain(s) to filter out (comma separated list).
* excludedom = Optional, domain(s) to filter out (comma separated list).
*
* "noindex, nofollow" will be returned if one of the following conditions is met:
* - The subdomain equals one of the default values in $subdomdef (see below),
* - OR the subdomain equals 'excludesubdom', if set.
* - The websites domain equals one of the default values in $domdef (see below),
* - OR websites domain equals 'excludedom', if set.
*
* If the URI contains 2 two subdomains like "dev.subdomain.devdomain.tld",
* $excludedom must be set to "subdomain.devdomain.tld" or &excludesubdom to "dev"
* to return "noindex, nofollow".
*
* Usage:
* [[set_noindex_on_dev_subdomain? &excludesubdom=`mydevsubdomain` &excludedom=`mydevserver.tld`]]
*
*/
$output = '';
// default subdomains to exclude
// use like: array("develop","dev").
$subdomdef = array("develop","dev","local","loc","preview","prev","pre","next","new","test" );
// default domains to exclude.
// use like: array("mydevserver.com","mystagingserver.org").
$domdef = array();
// get subdomains to exclude
$excludesubdom = $modx->getOption('excludesubdom', $scriptProperties);
$excludesubdomar = array_map('trim', explode(',', $excludesubdom));
$subdomexcluded = array_merge($excludesubdomar, $subdomdef);
// get domains to exclude
$excludedom = $modx->getOption('excludedom', $scriptProperties);
$excludedomar = array_map('trim', explode(',', $excludedom));
$domexcluded = array_merge($excludedomar, $domdef);
// get the current domain
$url = $modx->context->getOption('site_url', null, 'default');
$parsedUrl = parse_url($url);
$host = explode('.', $parsedUrl['host']);
$hostitems = count($host);
// check if it's a subdomain, otherwise exit
if ($hostitems < '3') {
return;
}
// check if domain meets excluded domains or default domains
if ($hostitems = '3') {
$domain = "$host[1].$host[2]";
if (in_array($domain, $domexcluded)) {
$output = "<meta name=\"robots\" content=\"noindex, nofollow\" />";
}
}
if ($hostitems = '4') {
$domain = "$host[1].$host[2].$host[3]";
if (in_array($domain, $domexcluded)) {
$output = "<meta name=\"robots\" content=\"noindex, nofollow\" />";
}
}
// check if domain meets excluded subdomain or default subdomains
$subdomain = $host[0];
if (in_array($subdomain, $subdomexcluded)) {
$output = "<meta name=\"robots\" content=\"noindex, nofollow\" />";
}
return $output;