Merge branch 'master' into 'master'
maindomain of aps-instance changeable and ordered rewrite rules in apache-vhost-conf
1. maindomain in apsinstance:
Posibility to change main-domain of aps-instance over remote (in interface maind…omain is always the websites domain but over remote it's now possible to set an alias oder subdomain, that will be used in instance-settings. Important if e.g. wordpress-installation should run unter an aliasdomain instead of the websites domain)
2. append *-Rewrite-Rules to the end of rewrite-rules. With this it is possible to use
- sub.domain.tld
- *.domain.tld
together with different subdir-redirects (with the usage of redirect-type L for sub.domain.tld). Before this change it was never possible to get it always working, because it depended on the order in database if it worked or not.
See merge request !255
| | |
| | | parent::__construct($app); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Removes www from Domains name |
| | | * |
| | | * @param $filename the file to read |
| | | * @return $sxe a SimpleXMLElement handle |
| | | */ |
| | | public function getMainDomain($domain) { |
| | | if (substr($domain, 0, 4) == 'www.') $domain = substr($domain, 4); |
| | | return $domain; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Reads in a package metadata file and registers it's namespaces |
| | |
| | | $app->uses('tools_sites'); |
| | | |
| | | $webserver_id = 0; |
| | | $websrv = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = ?", $settings['main_domain']); |
| | | $websrv = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = ?", $this->getMainDomain($settings['main_domain'])); |
| | | if(!empty($websrv)) $webserver_id = $websrv['server_id']; |
| | | $customerid = $this->getCustomerIDFromDomain($settings['main_domain']); |
| | | $customerid = $this->getCustomerIDFromDomain($this->getMainDomain($settings['main_domain'])); |
| | | |
| | | if(empty($settings) || empty($webserver_id)) return false; |
| | | |
| | |
| | | if(in_array($postinput['main_domain'], $domains)) |
| | | { |
| | | $docroot = $app->db->queryOneRecord("SELECT document_root FROM web_domain |
| | | WHERE domain = ?", $postinput['main_domain']); |
| | | WHERE domain = ?", $this->getMainDomain($postinput['main_domain'])); |
| | | $new_path = $docroot['document_root']; |
| | | if(substr($new_path, -1) != '/') $new_path .= '/'; |
| | | $new_path .= $main_location; |
| | | |
| | | // Get the $customerid which belongs to the selected domain |
| | | $customerid = $this->getCustomerIDFromDomain($postinput['main_domain']); |
| | | $customerid = $this->getCustomerIDFromDomain($this->getMainDomain($postinput['main_domain'])); |
| | | |
| | | // First get all domains used for an install, then their loop them |
| | | // and get the corresponding document roots as well as the defined |
| | |
| | | return false; |
| | | } |
| | | |
| | | $sql = "SELECT * FROM web_domain WHERE domain = ?"; |
| | | $domain = $app->db->queryOneRecord($sql, $params['main_domain']); |
| | | if (substr($params['main_domain'], 0, 4) == 'www.') { |
| | | $domain = substr($params['main_domain'], 4); |
| | | $sql = "SELECT * FROM web_domain WHERE domain = ? AND subdomain=?"; |
| | | $domain = $app->db->queryOneRecord($sql, $domain, 'www'); |
| | | } |
| | | else { |
| | | $sql = "SELECT * FROM web_domain WHERE domain = ?"; |
| | | $domain = $app->db->queryOneRecord($sql, $params['main_domain']); |
| | | } |
| | | |
| | | if (!$domain) { |
| | | $this->server->fault('invalid parameters', 'No valid domain given.'); |
| | |
| | | |
| | | // Rewrite rules |
| | | $rewrite_rules = array(); |
| | | $rewrite_wildcard_rules = array(); |
| | | if($data['new']['redirect_type'] != '' && $data['new']['redirect_path'] != '') { |
| | | if(substr($data['new']['redirect_path'], -1) != '/' && !preg_match('/^(https?|\[scheme\]):\/\//', $data['new']['redirect_path'])) $data['new']['redirect_path'] .= '/'; |
| | | if(substr($data['new']['redirect_path'], 0, 8) == '[scheme]'){ |
| | |
| | | 'rewrite_add_path' => (substr($rewrite_target, -1) == '/' ? 'y' : 'n')); |
| | | break; |
| | | case '*': |
| | | $rewrite_rules[] = array( 'rewrite_domain' => '(^|\.)'.$this->_rewrite_quote($data['new']['domain']), |
| | | $rewrite_wildcard_rules[] = array( 'rewrite_domain' => '(^|\.)'.$this->_rewrite_quote($data['new']['domain']), |
| | | 'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':'['.$data['new']['redirect_type'].']', |
| | | 'rewrite_target' => $rewrite_target, |
| | | 'rewrite_target_ssl' => $rewrite_target_ssl, |
| | |
| | | 'rewrite_add_path' => (substr($rewrite_target, -1) == '/' ? 'y' : 'n')); |
| | | break; |
| | | case '*': |
| | | $rewrite_rules[] = array( 'rewrite_domain' => '(^|\.)'.$this->_rewrite_quote($alias['domain']), |
| | | $rewrite_wildcard_rules[] = array( 'rewrite_domain' => '(^|\.)'.$this->_rewrite_quote($alias['domain']), |
| | | 'rewrite_type' => ($alias['redirect_type'] == 'no')?'':'['.$alias['redirect_type'].']', |
| | | 'rewrite_target' => $rewrite_target, |
| | | 'rewrite_target_ssl' => $rewrite_target_ssl, |
| | |
| | | } else { |
| | | $tpl->setVar('alias', ''); |
| | | } |
| | | |
| | | if (count($rewrite_wildcard_rules) > 0) $rewrite_rules = array_merge($rewrite_rules, $rewrite_wildcard_rules); // Append wildcard rules to the end of rules |
| | | |
| | | if(count($rewrite_rules) > 0 || $vhost_data['seo_redirect_enabled'] > 0 || count($alias_seo_redirects) > 0) { |
| | | $tpl->setVar('rewrite_enabled', 1); |