The Baker Show
12-20-2010, 01:09 AM
Hello!
My question :
I have a domain (example.com). I also have a sub-domain (sub.example.com) that points to the root, as does example.com. I have an htaccess file that passes everything to /index.php (off the root). index.php manipulates the display based on http_host and request_uri. I have also set htaccess conditions to allow certain files / directories to be shown. The problem I have is that there is a redirect loop when I view the sub-domain and do not follow it with an excepted file or directory. The php checks if the domain is in a text file, and if it is not redirects to google.com. I am not understanding what is wrong.
This is my first post to codingforums, so I'll start with my knowledge. I do not have much htaccess experience. I do know a bit about php from self studies. I have tried to post as much information as necessary to aid in your assistance. Lastly, thank you in advance!!
Tested:
[works] http://example.com
[works] http://example.com/uri-string
[works] http://example.com/2011-9xy9.css
[fails] http://sub.example.com
[fails] http://sub.example.com/uri-string
[works] http://sub.example.com/2011-9xy9.css
my htaccess file
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
# initial static rewrites, without conditions
RewriteRule ^oldindex /main.php [NC,L]
# allow access to the files inside specific directories, but not a directory listing..
RewriteCond %{REQUEST_URI} !2011images/(.*)\.
# allow access to these particular files...
RewriteCond %{REQUEST_URI} !robots.txt$
RewriteCond %{REQUEST_URI} !favicon.ico$
RewriteCond %{REQUEST_URI} !2011-9xy9.css$
RewriteCond %{REQUEST_URI} !index.php$
RewriteCond %{REQUEST_URI} !main.php$
# rewrite rules
RewriteRule ^(.*)$ /index.php [NC,L]
the php class that validates requesting http_host
class Common
{
public $adminPath = "/path/to/admin/folder/";
public $homeAddress = "http://example.com";
// FILE MANIPULATION //
public function FileWrite($location, $contents, $append)
{
if(($append == true) && (file_exists($location)))
$fileHandle = fopen($location, 'a');
else
$fileHandle = fopen($location, 'w');
fwrite($fileHandle, $contents);
fclose($fileHandle);
}
public function FileRead($location)
{
$contents = "";
if(file_exists($location))
{
$fileHandle = fopen($location, 'r');
$contents = fread($fileHandle, filesize($location));
fclose($fileHandle);
}
return $contents;
}
// REDIRECTION //
public function Redirect($location)
{
header("Location: ".$location);
}
// GENERAL OUTPUT //
public function Text()
{
return "object";
}
}
class DomainAddress extends Common
{
private $address;
private $title;
private $subtitle;
private $links;
public function DomainAddress($lookup)
{
$this->address = "http://".$_SERVER['HTTP_HOST'];
if($lookup == true)
{
// RETRIEVE OR REDIRECT //
if(!file_exists($this->adminPath."domain-address.txt"))
$this->Redirect($this->homeAddress);
$found = false;
$domainAddressLookup = explode("\n", $this->FileRead($this->adminPath."domain-address.txt"));
for($x = 0; $x < count($domainAddressLookup); $x++)
{
$domainAddressLookup[$x] = explode("~", $domainAddressLookup[$x]);
if($domainAddressLookup[$x][0] == $this->address)
{
$this->title = $domainAddressLookup[$x][1];
$this->subtitle = $domainAddressLookup[$x][2];
$this->links = $domainAddressLookup[$x][3];
$found = true;
}
if($found)
break;
}
if(!$found)
{
header("location: http://www.google.com");
}
}
else
{
$this->title = "Unknown Title";
$this->subtitle = "Unknown Subtitle";
$this->links = "No Links Found";
}
}
public function Text()
{
return "<h1>$this->title</h1>\n<h2>$this->subtitle</h2>\n<h2>$this->address</h2>\n";
}
public function Links()
{
return $this->links."\n";
}
}
I do repeat, EVERYTHING works as expected on http://example.com. Only the excepted files and directories work on http://sub.example.com.
My question :
I have a domain (example.com). I also have a sub-domain (sub.example.com) that points to the root, as does example.com. I have an htaccess file that passes everything to /index.php (off the root). index.php manipulates the display based on http_host and request_uri. I have also set htaccess conditions to allow certain files / directories to be shown. The problem I have is that there is a redirect loop when I view the sub-domain and do not follow it with an excepted file or directory. The php checks if the domain is in a text file, and if it is not redirects to google.com. I am not understanding what is wrong.
This is my first post to codingforums, so I'll start with my knowledge. I do not have much htaccess experience. I do know a bit about php from self studies. I have tried to post as much information as necessary to aid in your assistance. Lastly, thank you in advance!!
Tested:
[works] http://example.com
[works] http://example.com/uri-string
[works] http://example.com/2011-9xy9.css
[fails] http://sub.example.com
[fails] http://sub.example.com/uri-string
[works] http://sub.example.com/2011-9xy9.css
my htaccess file
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
# initial static rewrites, without conditions
RewriteRule ^oldindex /main.php [NC,L]
# allow access to the files inside specific directories, but not a directory listing..
RewriteCond %{REQUEST_URI} !2011images/(.*)\.
# allow access to these particular files...
RewriteCond %{REQUEST_URI} !robots.txt$
RewriteCond %{REQUEST_URI} !favicon.ico$
RewriteCond %{REQUEST_URI} !2011-9xy9.css$
RewriteCond %{REQUEST_URI} !index.php$
RewriteCond %{REQUEST_URI} !main.php$
# rewrite rules
RewriteRule ^(.*)$ /index.php [NC,L]
the php class that validates requesting http_host
class Common
{
public $adminPath = "/path/to/admin/folder/";
public $homeAddress = "http://example.com";
// FILE MANIPULATION //
public function FileWrite($location, $contents, $append)
{
if(($append == true) && (file_exists($location)))
$fileHandle = fopen($location, 'a');
else
$fileHandle = fopen($location, 'w');
fwrite($fileHandle, $contents);
fclose($fileHandle);
}
public function FileRead($location)
{
$contents = "";
if(file_exists($location))
{
$fileHandle = fopen($location, 'r');
$contents = fread($fileHandle, filesize($location));
fclose($fileHandle);
}
return $contents;
}
// REDIRECTION //
public function Redirect($location)
{
header("Location: ".$location);
}
// GENERAL OUTPUT //
public function Text()
{
return "object";
}
}
class DomainAddress extends Common
{
private $address;
private $title;
private $subtitle;
private $links;
public function DomainAddress($lookup)
{
$this->address = "http://".$_SERVER['HTTP_HOST'];
if($lookup == true)
{
// RETRIEVE OR REDIRECT //
if(!file_exists($this->adminPath."domain-address.txt"))
$this->Redirect($this->homeAddress);
$found = false;
$domainAddressLookup = explode("\n", $this->FileRead($this->adminPath."domain-address.txt"));
for($x = 0; $x < count($domainAddressLookup); $x++)
{
$domainAddressLookup[$x] = explode("~", $domainAddressLookup[$x]);
if($domainAddressLookup[$x][0] == $this->address)
{
$this->title = $domainAddressLookup[$x][1];
$this->subtitle = $domainAddressLookup[$x][2];
$this->links = $domainAddressLookup[$x][3];
$found = true;
}
if($found)
break;
}
if(!$found)
{
header("location: http://www.google.com");
}
}
else
{
$this->title = "Unknown Title";
$this->subtitle = "Unknown Subtitle";
$this->links = "No Links Found";
}
}
public function Text()
{
return "<h1>$this->title</h1>\n<h2>$this->subtitle</h2>\n<h2>$this->address</h2>\n";
}
public function Links()
{
return $this->links."\n";
}
}
I do repeat, EVERYTHING works as expected on http://example.com. Only the excepted files and directories work on http://sub.example.com.