From 3f766875805121f972d1f6a3ec70d38db60ccd17 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 15 Oct 2009 14:02:10 -0400
Subject: [PATCH] Fixed a problem with apache rewrite rules.

---
 server/plugins-available/apache2_plugin.inc.php |   20 ++++++++++++++++----
 install/tpl/apache_ispconfig.conf.master        |    6 ++++++
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master
index 49d0d9b..4f6d0da 100644
--- a/install/tpl/apache_ispconfig.conf.master
+++ b/install/tpl/apache_ispconfig.conf.master
@@ -13,4 +13,10 @@
     Deny from all
 </Directory>
 
+<Directory />
+       AllowOverride None
+       Order Deny,Allow
+       Deny from all
+</Directory>
+
 
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index ead37fb..5f1d7cd 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -578,9 +578,15 @@
 		// Rewrite rules
 		$rewrite_rules = array();
 		if($data["new"]["redirect_type"] != '') {
+			$data["new"]["redirect_path"] = str_replace('../','',$data["new"]["redirect_path"]);
 			if(substr($data["new"]["redirect_path"],-1) != '/') $data["new"]["redirect_path"] .= '/';
 			if($data["new"]["redirect_type"] != 'R' && substr($data["new"]["redirect_path"],0,4) != 'http') {
-				$data["new"]["redirect_path"] = $data["new"]["document_root"]."/web".realpath($data["new"]["redirect_path"]).'/';
+				if($data["new"]["redirect_path"] == '/') {
+					$data["new"]["redirect_path"] = $data["new"]["document_root"]."/web/";
+				} else {
+					if(substr($data["new"]["redirect_path"],0,1) != '/') $data["new"]["redirect_path"] = '/'.$data["new"]["redirect_path"];
+					$data["new"]["redirect_path"] = $data["new"]["document_root"]."/web".$data["new"]["redirect_path"];
+				}
 			}
 			
 			$rewrite_rules[] = array(	'rewrite_domain' 	=> $data["new"]["domain"],
@@ -629,9 +635,15 @@
 				$app->log("Add server alias: $alias[domain]",LOGLEVEL_DEBUG);
 				// Rewriting
 				if($alias["redirect_type"] != '') {
-					if(substr($data["new"]["redirect_path"],-1) != '/') $data["new"]["redirect_path"] .= '/';
-					if($data["new"]["redirect_type"] != 'L' && substr($data["new"]["redirect_path"],0,4) != 'http') {
-						$data["new"]["redirect_path"] = $data["new"]["document_root"]."/web".realpath($data["new"]["redirect_path"]).'/';
+					$alias["redirect_path"] = str_replace('../','',$alias["redirect_path"]);
+					if(substr($alias["redirect_path"],-1) != '/') $alias["redirect_path"] .= '/';
+					if($alias["redirect_type"] != 'R' && substr($alias["redirect_path"],0,4) != 'http') {
+						if($alias["redirect_path"] == '/') {
+							$alias["redirect_path"] = $data["new"]["document_root"]."/web/";
+						} else {
+							if(substr($alias["redirect_path"],0,1) != '/') $alias["redirect_path"] = '/'.$alias["redirect_path"];
+							$alias["redirect_path"] = $data["new"]["document_root"]."/web".$alias["redirect_path"];
+						}
 					}
 					$rewrite_rules[] = array(	'rewrite_domain' 	=> $alias["domain"],
 												'rewrite_type' 		=> ($alias["redirect_type"] == 'no')?'':'['.$alias["redirect_type"].']',

--
Gitblit v1.9.1