Skip to content

Commit f927494

Browse files
committed
Added support for the "Redirect" tab to nginx.
1 parent 71279eb commit f927494

File tree

10 files changed

+133
-31
lines changed

10 files changed

+133
-31
lines changed

install/tpl/nginx_ispconfig.vhost.master

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ server {
1717
}
1818

1919
location ~ \.php$ {
20+
try_files $uri =404;
2021
fastcgi_pass 127.0.0.1:{fpm_port};
2122
fastcgi_index index.php;
2223
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
@@ -32,6 +33,7 @@ server {
3233
root /usr/share/;
3334
index index.php index.html index.htm;
3435
location ~ ^/phpmyadmin/(.+\.php)$ {
36+
try_files $uri =404;
3537
root /usr/share/;
3638
fastcgi_pass 127.0.0.1:{fpm_port};
3739
{ssl_comment}fastcgi_param HTTPS {fastcgi_ssl};

interface/web/sites/form/web_aliasdomain.tform.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
'datatype' => 'VARCHAR',
107107
'formtype' => 'SELECT',
108108
'default' => 'y',
109-
'value' => array('' => 'no_redirect_txt', 'no' => 'no_flag_txt', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L')
109+
'value' => array('' => 'no_redirect_txt', 'no' => 'no_flag_txt', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L', 'last' => 'last', 'break' => 'break', 'redirect' => 'redirect', 'permanent' => 'permanent')
110110
),
111111
'redirect_path' => array (
112112
'datatype' => 'VARCHAR',

interface/web/sites/form/web_domain.tform.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231
'datatype' => 'VARCHAR',
232232
'formtype' => 'SELECT',
233233
'default' => '',
234-
'value' => array('' => 'no_redirect_txt', 'no' => 'no_flag_txt', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L')
234+
'value' => array('' => 'no_redirect_txt', 'no' => 'no_flag_txt', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L', 'last' => 'last', 'break' => 'break', 'redirect' => 'redirect', 'permanent' => 'permanent')
235235
),
236236
'redirect_path' => array (
237237
'datatype' => 'VARCHAR',

interface/web/sites/form/web_subdomain.tform.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
'datatype' => 'VARCHAR',
107107
'formtype' => 'SELECT',
108108
'default' => 'y',
109-
'value' => array('' => 'no_redirect_txt', 'no' => 'no_flag_txt', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L')
109+
'value' => array('' => 'no_redirect_txt', 'no' => 'no_flag_txt', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L', 'last' => 'last', 'break' => 'break', 'redirect' => 'redirect', 'permanent' => 'permanent')
110110
),
111111
'redirect_path' => array (
112112
'datatype' => 'VARCHAR',

interface/web/sites/templates/web_aliasdomain_edit.htm

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,34 @@ <h2><tmpl_var name="list_head_txt"></h2>
5454
</div>
5555

5656
</div>
57+
<script language="JavaScript" type="text/javascript">
58+
var webId = jQuery('input[name="id"]').val();
59+
var serverId;
60+
getServerId(webId);
61+
adjustForm(serverId);
62+
63+
function getServerId(webId){
64+
jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
65+
serverId = data.serverid;
66+
});
67+
}
68+
69+
function adjustForm(serverId){
70+
jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
71+
var selected = jQuery('#redirect_type').val();
72+
if(data.servertype == "nginx"){
73+
jQuery('#redirect_type option[value="R"]').hide();
74+
jQuery('#redirect_type option[value="L"]').hide();
75+
jQuery('#redirect_type option[value="R,L"]').hide();
76+
if(selected != "no" && selected != "" && selected != "last" && selected != "break" && selected != "redirect" && selected != "permanent") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
77+
} else {
78+
jQuery('#redirect_type option[value="last"]').hide();
79+
jQuery('#redirect_type option[value="break"]').hide();
80+
jQuery('#redirect_type option[value="redirect"]').hide();
81+
jQuery('#redirect_type option[value="permanent"]').hide();
82+
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
83+
}
84+
});
85+
}
86+
87+
</script>

interface/web/sites/templates/web_domain_advanced.htm

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,9 @@ <h2><tmpl_var name="list_head_txt"></h2>
6464
if(data.servertype == "nginx"){
6565
jQuery('.nginx').show();
6666
jQuery('.apache').hide();
67-
/*
68-
jQuery('#allow_override').closest('div.ctrlHolder').hide();
69-
jQuery('#apache_directives').closest('div.ctrlHolder').hide();
70-
*/
7167
} else {
7268
jQuery('.nginx').hide();
7369
jQuery('.apache').show();
74-
/*
75-
jQuery('#allow_override').closest('div.ctrlHolder').show();
76-
jQuery('#apache_directives').closest('div.ctrlHolder').show();
77-
*/
7870
}
7971
});
8072
}

interface/web/sites/templates/web_domain_redirect.htm

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,34 @@ <h2><tmpl_var name="list_head_txt"></h2>
2626
</div>
2727

2828
</div>
29+
<script language="JavaScript" type="text/javascript">
30+
var webId = jQuery('input[name="id"]').val();
31+
var serverId;
32+
getServerId(webId);
33+
adjustForm(serverId);
34+
35+
function getServerId(webId){
36+
jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
37+
serverId = data.serverid;
38+
});
39+
}
40+
41+
function adjustForm(serverId){
42+
jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
43+
var selected = jQuery('#redirect_type').val();
44+
if(data.servertype == "nginx"){
45+
jQuery('#redirect_type option[value="R"]').hide();
46+
jQuery('#redirect_type option[value="L"]').hide();
47+
jQuery('#redirect_type option[value="R,L"]').hide();
48+
if(selected != "no" && selected != "" && selected != "last" && selected != "break" && selected != "redirect" && selected != "permanent") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
49+
} else {
50+
jQuery('#redirect_type option[value="last"]').hide();
51+
jQuery('#redirect_type option[value="break"]').hide();
52+
jQuery('#redirect_type option[value="redirect"]').hide();
53+
jQuery('#redirect_type option[value="permanent"]').hide();
54+
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
55+
}
56+
});
57+
}
58+
59+
</script>

interface/web/sites/templates/web_subdomain_edit.htm

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,34 @@ <h2><tmpl_var name="list_head_txt"></h2>
4040
</div>
4141

4242
</div>
43+
<script language="JavaScript" type="text/javascript">
44+
var webId = jQuery('input[name="id"]').val();
45+
var serverId;
46+
getServerId(webId);
47+
adjustForm(serverId);
48+
49+
function getServerId(webId){
50+
jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
51+
serverId = data.serverid;
52+
});
53+
}
54+
55+
function adjustForm(serverId){
56+
jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
57+
var selected = jQuery('#redirect_type').val();
58+
if(data.servertype == "nginx"){
59+
jQuery('#redirect_type option[value="R"]').hide();
60+
jQuery('#redirect_type option[value="L"]').hide();
61+
jQuery('#redirect_type option[value="R,L"]').hide();
62+
if(selected != "no" && selected != "" && selected != "last" && selected != "break" && selected != "redirect" && selected != "permanent") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
63+
} else {
64+
jQuery('#redirect_type option[value="last"]').hide();
65+
jQuery('#redirect_type option[value="break"]').hide();
66+
jQuery('#redirect_type option[value="redirect"]').hide();
67+
jQuery('#redirect_type option[value="permanent"]').hide();
68+
if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
69+
}
70+
});
71+
}
72+
73+
</script>

server/conf/nginx_vhost.conf.master

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ server {
1010
server_name <tmpl_var name='domain'> <tmpl_var name='alias'>;
1111

1212
root <tmpl_var name='web_document_root_www'>;
13+
14+
<tmpl_loop name="redirects">
15+
16+
if ($http_host ~* "<tmpl_var name='rewrite_domain'>$") {
17+
rewrite ^/(.+)$ <tmpl_var name='rewrite_target'>$1 <tmpl_var name='rewrite_type'>;
18+
}
19+
</tmpl_loop>
1320

1421
location / {
1522
index index.html index.php;
@@ -47,7 +54,7 @@ server {
4754
log_not_found off;
4855
}
4956

50-
location = /favicon.ico {
57+
location /favicon.ico {
5158
log_not_found off;
5259
access_log off;
5360
}
@@ -67,6 +74,7 @@ server {
6774
<tmpl_if name='php' op='==' value='fast-cgi'>
6875

6976
location ~ \.php$ {
77+
try_files $uri =404;
7078
fastcgi_pass 127.0.0.1:<tmpl_var name='fpm_port'>;
7179
fastcgi_index index.php;
7280
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
@@ -83,6 +91,7 @@ server {
8391
<tmpl_if name='cgi' op='==' value='y'>
8492

8593
location /cgi-bin/ {
94+
try_files $uri =404;
8695
root <tmpl_var name='document_root'>;
8796
gzip off;
8897
fastcgi_pass unix:/var/run/fcgiwrap.socket;

server/plugins-available/nginx_plugin.inc.php

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -675,22 +675,24 @@ function update($event_name,$data) {
675675
}
676676
*/
677677

678-
$rewrite_rules[] = array( 'rewrite_domain' => $data['new']['domain'],
679-
'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':'['.$data['new']['redirect_type'].']',
680-
'rewrite_target' => $data['new']['redirect_path']);
681-
682678
switch($data['new']['subdomain']) {
683679
case 'www':
684-
$rewrite_rules[] = array( 'rewrite_domain' => 'www.'.$data['new']['domain'],
685-
'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':'['.$data['new']['redirect_type'].']',
680+
$rewrite_rules[] = array( 'rewrite_domain' => '^'.$data['new']['domain'],
681+
'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':$data['new']['redirect_type'],
682+
'rewrite_target' => $data['new']['redirect_path']);
683+
$rewrite_rules[] = array( 'rewrite_domain' => '^www.'.$data['new']['domain'],
684+
'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':$data['new']['redirect_type'],
686685
'rewrite_target' => $data['new']['redirect_path']);
687686
break;
688687
case '*':
689-
// TODO
690-
//$rewrite_rules[] = array( 'rewrite_domain' => '*'.$alias['domain'],
691-
// 'rewrite_type' => $alias['redirect_type'],
692-
// 'rewrite_target' => $alias['redirect_path']);
688+
$rewrite_rules[] = array( 'rewrite_domain' => $data['new']['domain'],
689+
'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':$data['new']['redirect_type'],
690+
'rewrite_target' => $data['new']['redirect_path']);
693691
break;
692+
default:
693+
$rewrite_rules[] = array( 'rewrite_domain' => '^'.$data['new']['domain'],
694+
'rewrite_type' => ($data['new']['redirect_type'] == 'no')?'':$data['new']['redirect_type'],
695+
'rewrite_target' => $data['new']['redirect_path']);
694696
}
695697
}
696698

@@ -727,21 +729,25 @@ function update($event_name,$data) {
727729
$data['new']['redirect_path'] = $data['new']['document_root'].'/web'.realpath($data['new']['redirect_path']).'/';
728730
}
729731
*/
730-
$rewrite_rules[] = array( 'rewrite_domain' => $alias['domain'],
731-
'rewrite_type' => ($alias['redirect_type'] == 'no')?'':'['.$alias['redirect_type'].']',
732-
'rewrite_target' => $alias['redirect_path']);
732+
733733
switch($alias['subdomain']) {
734734
case 'www':
735-
$rewrite_rules[] = array( 'rewrite_domain' => 'www.'.$alias['domain'],
736-
'rewrite_type' => ($alias['redirect_type'] == 'no')?'':'['.$alias['redirect_type'].']',
735+
$rewrite_rules[] = array( 'rewrite_domain' => '^'.$alias['domain'],
736+
'rewrite_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type'],
737+
'rewrite_target' => $alias['redirect_path']);
738+
$rewrite_rules[] = array( 'rewrite_domain' => '^www.'.$alias['domain'],
739+
'rewrite_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type'],
737740
'rewrite_target' => $alias['redirect_path']);
738741
break;
739742
case '*':
740-
// TODO
741-
//$rewrite_rules[] = array( 'rewrite_domain' => '*'.$alias['domain'],
742-
// 'rewrite_type' => $alias['redirect_type'],
743-
// 'rewrite_target' => $alias['redirect_path']);
743+
$rewrite_rules[] = array( 'rewrite_domain' => $alias['domain'],
744+
'rewrite_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type'],
745+
'rewrite_target' => $alias['redirect_path']);
744746
break;
747+
default:
748+
$rewrite_rules[] = array( 'rewrite_domain' => '^'.$alias['domain'],
749+
'rewrite_type' => ($alias['redirect_type'] == 'no')?'':$alias['redirect_type'],
750+
'rewrite_target' => $alias['redirect_path']);
745751
}
746752
}
747753
}

0 commit comments

Comments
 (0)