From e34fec13567f76f1a052362c071bd7e1a85dd7cf Mon Sep 17 00:00:00 2001 From: ftimme <ft@falkotimme.com> Date: Thu, 08 Nov 2012 08:52:13 -0500 Subject: [PATCH] - Added more options to the SEO Redirect field. --- server/conf/vhost.conf.master | 2 server/conf/nginx_vhost.conf.master | 2 server/plugins-available/apache2_plugin.inc.php | 37 ++++++++++++++++-- interface/web/sites/templates/web_domain_redirect.htm | 2 server/plugins-available/nginx_plugin.inc.php | 35 +++++++++++++++-- interface/web/sites/form/web_domain.tform.php | 2 6 files changed, 67 insertions(+), 13 deletions(-) diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index 45cf87e..86bc116 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -310,7 +310,7 @@ 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('' => 'no_redirect_txt', 'non_www_to_www' => 'non_www_to_www_txt', 'www_to_non_www' => 'www_to_non_www_txt') + 'value' => array('' => 'no_redirect_txt', 'non_www_to_www' => 'domain.tld => www.domain.tld', 'www_to_non_www' => 'www.domain.tld => domain.tld', '*_domain_tld_to_domain_tld' => '*.doman.tld => domain.tld', '*_domain_tld_to_www_domain_tld' => '*.domain.tld => www.domain.tld', '*_to_domain_tld' => '* => domain.tld', '*_to_www_domain_tld' => '* => www.domain.tld') ), ################################## # ENDE Datatable fields diff --git a/interface/web/sites/templates/web_domain_redirect.htm b/interface/web/sites/templates/web_domain_redirect.htm index dfb5b05..0f69395 100644 --- a/interface/web/sites/templates/web_domain_redirect.htm +++ b/interface/web/sites/templates/web_domain_redirect.htm @@ -17,7 +17,7 @@ </div> <div class="ctrlHolder"> <label for="seo_redirect">{tmpl_var name='seo_redirect_txt'}</label> - <select name="seo_redirect" id="seo_redirect" class="selectInput formLengthHalf"> + <select name="seo_redirect" id="seo_redirect" class="selectInput"> {tmpl_var name='seo_redirect'} </select> </div> diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index ab15542..7331a13 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -18,7 +18,7 @@ root <tmpl_var name='web_document_root_www'>; <tmpl_if name='seo_redirect_enabled'> - if ($http_host != "<tmpl_var name='seo_redirect_target_domain'>") { + if ($http_host <tmpl_var name='seo_redirect_operator'> "<tmpl_var name='seo_redirect_origin_domain'>") { rewrite ^ $scheme://<tmpl_var name='seo_redirect_target_domain'>$request_uri? permanent; } </tmpl_if> diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index f2fbf7c..4235596 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -253,7 +253,7 @@ <tmpl_if name="rewrite_enabled"> RewriteEngine on <tmpl_if name='seo_redirect_enabled'> - RewriteCond %{HTTP_HOST} ^<tmpl_var name='seo_redirect_origin_domain'>$ [NC] + RewriteCond %{HTTP_HOST} <tmpl_var name='seo_redirect_operator'>^<tmpl_var name='seo_redirect_origin_domain'>$ [NC] RewriteRule ^(.*)$ http://<tmpl_var name='seo_redirect_target_domain'>$1 [R=301,L] </tmpl_if> <tmpl_loop name="redirects"> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 542d62a..29b0483 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -849,15 +849,42 @@ //$vhost_data['document_root'] = $data['new']['document_root'].'/' . $web_folder; // Set SEO Redirect - if($data['new']['seo_redirect'] != '' && ($data['new']['subdomain'] == 'www' || $data['new']['subdomain'] == '*')){ + if($data['new']['seo_redirect'] != ''){ $vhost_data['seo_redirect_enabled'] = 1; - if($data['new']['seo_redirect'] == 'non_www_to_www'){ - $vhost_data['seo_redirect_origin_domain'] = $data['new']['domain']; - $vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain']; + if($data['new']['subdomain'] == 'www' || $data['new']['subdomain'] == '*'){ + if($data['new']['seo_redirect'] == 'non_www_to_www'){ + $vhost_data['seo_redirect_origin_domain'] = str_replace('.', '\.', $data['new']['domain']); + $vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain']; + $vhost_data['seo_redirect_operator'] = ''; + } + if($data['new']['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){ + // ^(example\.com|(?!\bwww\b)\.example\.com)$ + // ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$ + $vhost_data['seo_redirect_origin_domain'] = '('.str_replace('.', '\.', $data['new']['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $data['new']['domain']).'))'; + $vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain']; + $vhost_data['seo_redirect_operator'] = ''; + } + if($data['new']['seo_redirect'] == '*_to_www_domain_tld'){ + $vhost_data['seo_redirect_origin_domain'] = 'www\.'.str_replace('.', '\.', $data['new']['domain']); + $vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain']; + $vhost_data['seo_redirect_operator'] = '!'; + } } if($data['new']['seo_redirect'] == 'www_to_non_www'){ - $vhost_data['seo_redirect_origin_domain'] = 'www.'.$data['new']['domain']; + $vhost_data['seo_redirect_origin_domain'] = 'www\.'.str_replace('.', '\.', $data['new']['domain']); $vhost_data['seo_redirect_target_domain'] = $data['new']['domain']; + $vhost_data['seo_redirect_operator'] = ''; + } + if($data['new']['seo_redirect'] == '*_domain_tld_to_domain_tld'){ + // ^(.+)\.example\.com$ + $vhost_data['seo_redirect_origin_domain'] = '(.+)\.'.str_replace('.', '\.', $data['new']['domain']); + $vhost_data['seo_redirect_target_domain'] = $data['new']['domain']; + $vhost_data['seo_redirect_operator'] = ''; + } + if($data['new']['seo_redirect'] == '*_to_domain_tld'){ + $vhost_data['seo_redirect_origin_domain'] = str_replace('.', '\.', $data['new']['domain']); + $vhost_data['seo_redirect_target_domain'] = $data['new']['domain']; + $vhost_data['seo_redirect_operator'] = '!'; } } else { $vhost_data['seo_redirect_enabled'] = 0; diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 7f88410..68e8c6e 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -920,15 +920,42 @@ } // Set SEO Redirect - if($data['new']['seo_redirect'] != '' && ($data['new']['subdomain'] == 'www' || $data['new']['subdomain'] == '*')){ + if($data['new']['seo_redirect'] != ''){ $vhost_data['seo_redirect_enabled'] = 1; - if($data['new']['seo_redirect'] == 'non_www_to_www'){ - $vhost_data['seo_redirect_origin_domain'] = $data['new']['domain']; - $vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain']; + if($data['new']['subdomain'] == 'www' || $data['new']['subdomain'] == '*'){ + if($data['new']['seo_redirect'] == 'non_www_to_www'){ + $vhost_data['seo_redirect_origin_domain'] = $data['new']['domain']; + $vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain']; + $vhost_data['seo_redirect_operator'] = '='; + } + if($data['new']['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){ + // ^(example\.com|(?!\bwww\b)\.example\.com)$ + // ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$ + $vhost_data['seo_redirect_origin_domain'] = '^('.str_replace('.', '\.', $data['new']['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $data['new']['domain']).'))$'; + $vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain']; + $vhost_data['seo_redirect_operator'] = '~*'; + } + if($data['new']['seo_redirect'] == '*_to_www_domain_tld'){ + $vhost_data['seo_redirect_origin_domain'] = 'www.'.$data['new']['domain']; + $vhost_data['seo_redirect_target_domain'] = $vhost_data['seo_redirect_origin_domain']; + $vhost_data['seo_redirect_operator'] = '!='; + } } if($data['new']['seo_redirect'] == 'www_to_non_www'){ $vhost_data['seo_redirect_origin_domain'] = 'www.'.$data['new']['domain']; $vhost_data['seo_redirect_target_domain'] = $data['new']['domain']; + $vhost_data['seo_redirect_operator'] = '='; + } + if($data['new']['seo_redirect'] == '*_domain_tld_to_domain_tld'){ + // ^(.+)\.example\.com$ + $vhost_data['seo_redirect_origin_domain'] = '^(.+)\.'.str_replace('.', '\.', $data['new']['domain']).'$'; + $vhost_data['seo_redirect_target_domain'] = $data['new']['domain']; + $vhost_data['seo_redirect_operator'] = '~*'; + } + if($data['new']['seo_redirect'] == '*_to_domain_tld'){ + $vhost_data['seo_redirect_origin_domain'] = $data['new']['domain']; + $vhost_data['seo_redirect_target_domain'] = $vhost_data['seo_redirect_origin_domain']; + $vhost_data['seo_redirect_operator'] = '!='; } } else { $vhost_data['seo_redirect_enabled'] = 0; -- Gitblit v1.9.1