| | |
| | | // Rewrite rules |
| | | $own_rewrite_rules = array(); |
| | | $rewrite_rules = array(); |
| | | $local_rewrite_rules = array(); |
| | | if($data['new']['redirect_type'] != '' && $data['new']['redirect_path'] != '') { |
| | | if(substr($data['new']['redirect_path'],-1) != '/') $data['new']['redirect_path'] .= '/'; |
| | | if(substr($data['new']['redirect_path'],0,8) == '[scheme]'){ |
| | |
| | | |
| | | switch($data['new']['subdomain']) { |
| | | case 'www': |
| | | $exclude_own_hostname = ''; |
| | | if(substr($data['new']['redirect_path'],0,1) == '/'){ // relative path |
| | | if($data['new']['redirect_type'] == 'proxy'){ |
| | | $vhost_data['web_document_root_www_proxy'] = 'root '.$vhost_data['web_document_root_www'].';'; |
| | |
| | | break; |
| | | } else { |
| | | $rewrite_exclude = '(?!/\b('.substr($tmp_redirect_path_parts['path'],1).(substr($tmp_redirect_path_parts['path'],1) != ''? '|': '').'stats'.($vhost_data['errordocs'] == 1 ? '|error' : '').')\b)/'; |
| | | $exclude_own_hostname = $tmp_redirect_path_parts['host']; |
| | | } |
| | | } else { |
| | | // external URL |
| | |
| | | $vhost_data['use_proxy'] = 'y'; |
| | | $rewrite_subdir = $tmp_redirect_path_parts['path']; |
| | | if(substr($rewrite_subdir,0,1) == '/') $rewrite_subdir = substr($rewrite_subdir,1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | if(substr($rewrite_subdir,-1) != '/') $rewrite_subdir .= '/'; |
| | | if($rewrite_subdir == '/') $rewrite_subdir = ''; |
| | | } |
| | | } |
| | | unset($tmp_redirect_path); |
| | |
| | | 'rewrite_target' => $data['new']['redirect_path'], |
| | | 'rewrite_exclude' => $rewrite_exclude, |
| | | 'rewrite_subdir' => $rewrite_subdir, |
| | | 'exclude_own_hostname' => $exclude_own_hostname, |
| | | 'proxy_directives' => $final_proxy_directives, |
| | | 'use_rewrite' => ($data['new']['redirect_type'] == 'proxy' ? false:true), |
| | | 'use_proxy' => ($data['new']['redirect_type'] == 'proxy' ? true:false)); |
| | | break; |
| | | case '*': |
| | | $exclude_own_hostname = ''; |
| | | if(substr($data['new']['redirect_path'],0,1) == '/'){ // relative path |
| | | if($data['new']['redirect_type'] == 'proxy'){ |
| | | $vhost_data['web_document_root_www_proxy'] = 'root '.$vhost_data['web_document_root_www'].';'; |
| | |
| | | break; |
| | | } else { |
| | | $rewrite_exclude = '(?!/\b('.substr($tmp_redirect_path_parts['path'],1).(substr($tmp_redirect_path_parts['path'],1) != ''? '|': '').'stats'.($vhost_data['errordocs'] == 1 ? '|error' : '').')\b)/'; |
| | | $exclude_own_hostname = $tmp_redirect_path_parts['host']; |
| | | } |
| | | } else { |
| | | // external URL |
| | |
| | | $vhost_data['use_proxy'] = 'y'; |
| | | $rewrite_subdir = $tmp_redirect_path_parts['path']; |
| | | if(substr($rewrite_subdir,0,1) == '/') $rewrite_subdir = substr($rewrite_subdir,1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | if(substr($rewrite_subdir,-1) != '/') $rewrite_subdir .= '/'; |
| | | if($rewrite_subdir == '/') $rewrite_subdir = ''; |
| | | } |
| | | } |
| | | unset($tmp_redirect_path); |
| | |
| | | 'rewrite_target' => $data['new']['redirect_path'], |
| | | 'rewrite_exclude' => $rewrite_exclude, |
| | | 'rewrite_subdir' => $rewrite_subdir, |
| | | 'exclude_own_hostname' => $exclude_own_hostname, |
| | | 'proxy_directives' => $final_proxy_directives, |
| | | 'use_rewrite' => ($data['new']['redirect_type'] == 'proxy' ? false:true), |
| | | 'use_proxy' => ($data['new']['redirect_type'] == 'proxy' ? true:false)); |
| | | break; |
| | | default: |
| | | if(substr($data['new']['redirect_path'],0,1) == '/'){ // relative path |
| | | $exclude_own_hostname = ''; |
| | | if($data['new']['redirect_type'] == 'proxy'){ |
| | | $vhost_data['web_document_root_www_proxy'] = 'root '.$vhost_data['web_document_root_www'].';'; |
| | | $vhost_data['web_document_root_www'] .= substr($data['new']['redirect_path'],0,-1); |
| | |
| | | break; |
| | | } else { |
| | | $rewrite_exclude = '(?!/\b('.substr($tmp_redirect_path_parts['path'],1).(substr($tmp_redirect_path_parts['path'],1) != ''? '|': '').'stats'.($vhost_data['errordocs'] == 1 ? '|error' : '').')\b)/'; |
| | | $exclude_own_hostname = $tmp_redirect_path_parts['host']; |
| | | } |
| | | } else { |
| | | // external URL |
| | |
| | | $vhost_data['use_proxy'] = 'y'; |
| | | $rewrite_subdir = $tmp_redirect_path_parts['path']; |
| | | if(substr($rewrite_subdir,0,1) == '/') $rewrite_subdir = substr($rewrite_subdir,1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | if(substr($rewrite_subdir,-1) != '/') $rewrite_subdir .= '/'; |
| | | if($rewrite_subdir == '/') $rewrite_subdir = ''; |
| | | } |
| | | } |
| | | unset($tmp_redirect_path); |
| | |
| | | 'rewrite_target' => $data['new']['redirect_path'], |
| | | 'rewrite_exclude' => $rewrite_exclude, |
| | | 'rewrite_subdir' => $rewrite_subdir, |
| | | 'exclude_own_hostname' => $exclude_own_hostname, |
| | | 'proxy_directives' => $final_proxy_directives, |
| | | 'use_rewrite' => ($data['new']['redirect_type'] == 'proxy' ? false:true), |
| | | 'use_proxy' => ($data['new']['redirect_type'] == 'proxy' ? true:false)); |
| | |
| | | $final_proxy_directives = false; |
| | | } |
| | | |
| | | if($alias['redirect_type'] == '' || $alias['redirect_path'] == '') { |
| | | if($alias['redirect_type'] == '' || $alias['redirect_path'] == '' || substr($alias['redirect_path'],0,1) == '/') { |
| | | switch($alias['subdomain']) { |
| | | case 'www': |
| | | $server_alias[] = 'www.'.$alias['domain'].' '.$alias['domain'].' '; |
| | |
| | | } |
| | | } |
| | | |
| | | // Rewriting |
| | | if($alias['redirect_type'] != '' && $alias['redirect_path'] != '') { |
| | | // Local Rewriting (inside vhost server {} container) |
| | | if($alias['redirect_type'] != '' && substr($alias['redirect_path'],0,1) == '/' && $alias['redirect_type'] != 'proxy') { // proxy makes no sense with local path |
| | | if(substr($alias['redirect_path'],-1) != '/') $alias['redirect_path'] .= '/'; |
| | | $rewrite_exclude = '(?!/\b('.substr($alias['redirect_path'],1,-1).(substr($alias['redirect_path'],1,-1) != ''? '|': '').'stats'.($vhost_data['errordocs'] == 1 ? '|error' : '').')\b)/'; |
| | | switch($alias['subdomain']) { |
| | | case 'www': |
| | | // example.com |
| | | $local_rewrite_rules[] = array( 'local_redirect_origin_domain' => $alias['domain'], |
| | | 'local_redirect_operator' => '=', |
| | | 'local_redirect_exclude' => $rewrite_exclude, |
| | | 'local_redirect_target' => $alias['redirect_path'], |
| | | 'local_redirect_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type']); |
| | | |
| | | // www.example.com |
| | | $local_rewrite_rules[] = array( 'local_redirect_origin_domain' => 'www.'.$alias['domain'], |
| | | 'local_redirect_operator' => '=', |
| | | 'local_redirect_exclude' => $rewrite_exclude, |
| | | 'local_redirect_target' => $alias['redirect_path'], |
| | | 'local_redirect_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type']); |
| | | break; |
| | | case '*': |
| | | $local_rewrite_rules[] = array( 'local_redirect_origin_domain' => '^('.str_replace('.', '\.', $alias['domain']).'|.+\.'.str_replace('.', '\.', $alias['domain']).')$', |
| | | 'local_redirect_operator' => '~*', |
| | | 'local_redirect_exclude' => $rewrite_exclude, |
| | | 'local_redirect_target' => $alias['redirect_path'], |
| | | 'local_redirect_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type']); |
| | | break; |
| | | default: |
| | | $local_rewrite_rules[] = array( 'local_redirect_origin_domain' => $alias['domain'], |
| | | 'local_redirect_operator' => '=', |
| | | 'local_redirect_exclude' => $rewrite_exclude, |
| | | 'local_redirect_target' => $alias['redirect_path'], |
| | | 'local_redirect_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type']); |
| | | } |
| | | } |
| | | |
| | | // External Rewriting (extra server {} containers) |
| | | if($alias['redirect_type'] != '' && $alias['redirect_path'] != '' && substr($alias['redirect_path'],0,1) != '/') { |
| | | if(substr($alias['redirect_path'],-1) != '/') $alias['redirect_path'] .= '/'; |
| | | if(substr($alias['redirect_path'],0,8) == '[scheme]'){ |
| | | if($alias['redirect_type'] != 'proxy'){ |
| | |
| | | |
| | | switch($alias['subdomain']) { |
| | | case 'www': |
| | | if(substr($alias['redirect_path'],0,1) == '/'){ // relative path |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $rewrite_subdir = substr($alias['redirect_path'],1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | } |
| | | $alias['redirect_path'] = ($alias['redirect_type'] == 'proxy'? 'http' : '$scheme').'://'.($vhost_data['seo_redirect_enabled'] ? $vhost_data['seo_redirect_target_domain'] : $data['new']['domain']).$alias['redirect_path']; |
| | | } else { |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $tmp_redirect_path = $alias['redirect_path']; |
| | | $tmp_redirect_path_parts = parse_url($tmp_redirect_path); |
| | | $rewrite_subdir = $tmp_redirect_path_parts['path']; |
| | | if(substr($rewrite_subdir,0,1) == '/') $rewrite_subdir = substr($rewrite_subdir,1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | if(substr($rewrite_subdir,-1) != '/') $rewrite_subdir .= '/'; |
| | | if($rewrite_subdir == '/') $rewrite_subdir = ''; |
| | | } |
| | | } |
| | | |
| | | if($alias['redirect_type'] != 'proxy'){ |
| | | if(substr($alias['redirect_path'],-1) == '/') $alias['redirect_path'] = substr($alias['redirect_path'],0,-1); |
| | | } |
| | |
| | | 'use_proxy' => ($alias['redirect_type'] == 'proxy' ? true:false), |
| | | 'alias_seo_redirects2' => (count($alias_seo_redirects2) > 0 ? $alias_seo_redirects2 : false)); |
| | | |
| | | |
| | | if(substr($alias['redirect_path'],0,1) == '/'){ // relative path |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $rewrite_subdir = substr($alias['redirect_path'],1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | } |
| | | $alias['redirect_path'] = ($alias['redirect_type'] == 'proxy'? 'http' : '$scheme').'://'.($vhost_data['seo_redirect_enabled'] ? $vhost_data['seo_redirect_target_domain'] : $data['new']['domain']).$alias['redirect_path']; |
| | | } else { |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $tmp_redirect_path = $alias['redirect_path']; |
| | | $tmp_redirect_path_parts = parse_url($tmp_redirect_path); |
| | | $rewrite_subdir = $tmp_redirect_path_parts['path']; |
| | | if(substr($rewrite_subdir,0,1) == '/') $rewrite_subdir = substr($rewrite_subdir,1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | } |
| | | } |
| | | if($alias['redirect_type'] != 'proxy'){ |
| | | if(substr($alias['redirect_path'],-1) == '/') $alias['redirect_path'] = substr($alias['redirect_path'],0,-1); |
| | | } |
| | | // Add SEO redirects for alias domains |
| | | $alias_seo_redirects2 = array(); |
| | | if($alias['seo_redirect'] != ''){ |
| | |
| | | 'alias_seo_redirects2' => (count($alias_seo_redirects2) > 0 ? $alias_seo_redirects2 : false)); |
| | | break; |
| | | case '*': |
| | | if(substr($alias['redirect_path'],0,1) == '/'){ // relative path |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $rewrite_subdir = substr($alias['redirect_path'],1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | } |
| | | $alias['redirect_path'] = ($alias['redirect_type'] == 'proxy'? 'http' : '$scheme').'://'.($vhost_data['seo_redirect_enabled'] ? $vhost_data['seo_redirect_target_domain'] : $data['new']['domain']).$alias['redirect_path']; |
| | | } else { |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $tmp_redirect_path = $alias['redirect_path']; |
| | | $tmp_redirect_path_parts = parse_url($tmp_redirect_path); |
| | | $rewrite_subdir = $tmp_redirect_path_parts['path']; |
| | | if(substr($rewrite_subdir,0,1) == '/') $rewrite_subdir = substr($rewrite_subdir,1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | if(substr($rewrite_subdir,-1) != '/') $rewrite_subdir .= '/'; |
| | | if($rewrite_subdir == '/') $rewrite_subdir = ''; |
| | | } |
| | | } |
| | | |
| | | if($alias['redirect_type'] != 'proxy'){ |
| | | if(substr($alias['redirect_path'],-1) == '/') $alias['redirect_path'] = substr($alias['redirect_path'],0,-1); |
| | | } |
| | |
| | | 'alias_seo_redirects2' => (count($alias_seo_redirects2) > 0 ? $alias_seo_redirects2 : false)); |
| | | break; |
| | | default: |
| | | if(substr($alias['redirect_path'],0,1) == '/'){ // relative path |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $rewrite_subdir = substr($alias['redirect_path'],1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | } |
| | | $alias['redirect_path'] = ($alias['redirect_type'] == 'proxy'? 'http' : '$scheme').'://'.($vhost_data['seo_redirect_enabled'] ? $vhost_data['seo_redirect_target_domain'] : $data['new']['domain']).$alias['redirect_path']; |
| | | } else { |
| | | if($alias['redirect_type'] == 'proxy'){ |
| | | $tmp_redirect_path = $alias['redirect_path']; |
| | | $tmp_redirect_path_parts = parse_url($tmp_redirect_path); |
| | | $rewrite_subdir = $tmp_redirect_path_parts['path']; |
| | | if(substr($rewrite_subdir,0,1) == '/') $rewrite_subdir = substr($rewrite_subdir,1); |
| | | if(substr($rewrite_subdir,-1) == '/') $rewrite_subdir = substr($rewrite_subdir,0,-1); |
| | | if(substr($rewrite_subdir,-1) != '/') $rewrite_subdir .= '/'; |
| | | if($rewrite_subdir == '/') $rewrite_subdir = ''; |
| | | } |
| | | } |
| | | |
| | | if($alias['redirect_type'] != 'proxy'){ |
| | | if(substr($alias['redirect_path'],-1) == '/') $alias['redirect_path'] = substr($alias['redirect_path'],0,-1); |
| | | } |
| | |
| | | if(count($own_rewrite_rules) > 0) { |
| | | $tpl->setLoop('own_redirects',$own_rewrite_rules); |
| | | } |
| | | if(count($local_rewrite_rules) > 0) { |
| | | $tpl->setLoop('local_redirects',$local_rewrite_rules); |
| | | } |
| | | if(count($alias_seo_redirects) > 0) { |
| | | $tpl->setLoop('alias_seo_redirects',$alias_seo_redirects); |
| | | } |