Load originalsite.com content to newsite.com url with all links working straight from newsite.com without iframe. Just php and htaccess goodness
Note: This article was published on my web development company blog and re-posted over here for enabling discussion and continuous developments
Now you want to mirror a website of someone else or your own to a new domain. You can simply set it as an addon domain if you have access to original site’s hosting control panel. But what if not? If you use htaccess redirects, it promptly redirects to original site.
Another quick way is to use iframes. Just put following code in your index.html of new domain.
[code] [/code]
But if visitor clicks a link on the page, it wont update the url on the address bar and user fill feel fishy 🙂
Here is the simple script which makes the masking work. It has two portions a php file and one htaccess file.
What php file does is, it opens the original website and grab the content to bump it back to the browser. In the process, it replaces any text with source site url to your new url. So that links on the site and all resource are called from your new domain itself. Smart! isn’t it?
[code]
# index.php
‘;
$host = preg_replace(‘/^[^\/]+\/\//’,”,$URL);
$tarray = explode(‘/’,$host);
$host = array_shift($tarray);
$URI = ‘/’ . implode(‘/’,$tarray);
$content = ”;
$fp = @fsockopen($host,80,$errno,$errstr,30);
if(!$fp) { echo “Unable to open socked: $errstr ($errno)\n”; exit; }
fwrite($fp,”GET $URI HTTP/1.0\r\n”);
fwrite($fp,”Host: $host\r\n”);
if( isset($_SERVER[“HTTP_USER_AGENT”]) ) { fwrite($fp,’User-Agent: ‘.$_SERVER[“HTTP_USER_AGENT”].”\r\n”); }
fwrite($fp,”Connection: Close\r\n”);
fwrite($fp,”\r\n”);
while (!feof($fp)) { $content .= fgets($fp, 128); }
fclose($fp);
if( strpos($content,”\r\n”) > 0 ) { $eolchar = “\r\n”; }
else { $eolchar = “\n”; }
$eolpos = strpos($content,”$eolchar$eolchar”);
$content = substr($content,($eolpos + strlen(“$eolchar$eolchar”)));
$content = str_replace($wc_source,$wc_mirror,$content);
// replaces paths with / in the begining without full url. not required unless you are in subfolder
$content = str_replace(‘href=”/’,’href=”http://’.$wc_mirror.’/’,$content);
$content = str_replace(‘src=”/’,’src=”http://’.$wc_mirror.’/’,$content);
// $fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts[“extension”]);
// Determine Content Type
switch ($ext) {
case “pdf”: $ctype=”application/pdf”; break;
case “exe”: $ctype=”application/octet-stream”; break;
case “zip”: $ctype=”application/zip”; break;
case “doc”: $ctype=”application/msword”; break;
case “xls”: $ctype=”application/vnd.ms-excel”; break;
case “ppt”: $ctype=”application/vnd.ms-powerpoint”; break;
case “gif”: $ctype=”image/gif”; break;
case “png”: $ctype=”image/png”; break;
case “jpeg”: $ctype=”image/jpg”; break;
case “jpg”: $ctype=”image/jpg”; break;
case “js”: $ctype=”text/javascript”; break;
case “css”: $ctype=”text/css”; break;
}
header(“Pragma: public”); // required
header(“Expires: 0”);
header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”);
header(“Cache-Control: private”,false); // required for certain browsers
header(“Content-Type: $ctype”);
header(“Content-Transfer-Encoding: binary”);
// header(“Content-Length: “.$fsize);
if( preg_match(‘/
/i’,$content) ) { echo( preg_replace(‘//i’,’‘.$base,$content,1) ); }Once the files are set with proper urls, when you go to newdomain.com , it will show you content from originalsite.com and all links will word as of newdomain.com/link.html
AI is being used in programming to improve efficiency, accuracy and automation. It is being used in machine learning algorithms…
For a long time since Push notification became a thing on iOS, it was very simple to integrate push notification…
Note: A little bit of a story since I haven't been writing for a while. If you are in a…
There are few things that are quite as universally important in a business like marketing. Good marketing is at the…
Since latest iOS and macOs removed support for PPTP VPN from their built in client, here is how you can…
Back to habits of young days. Shaping up another life. Starting like a kid who is a great king.
View Comments
If you would like to increase your know-how only keep visiting this website and be updated with the hottest information posted
here.
Hi,
thanks for this script, but not good work for me (not correct show images).
Problem is when image code or not
I commenet (add //) line:
// $content = str_replace('src="/','src="http://'.$wc_mirror.'/',$content);
Now work all fine.
Steve
Hi Remiz,
Have uploaded your files at our site http://www.craftwholesale.in/ which is redirecting to crafts.itsybitsy.in, but on clicking any link opens only the home page
Please advice
Hi Remiz,
Great Job... kudos from my team....
Thank You..
Is is it possible to tweak the code so subdomains get passed on to the mirror? Ex: foo.mirrordomain.com will load foo.sourcedomain.com (under the mask).
How did you get it to work with sub domains?
I was actually able to modify this code to get it to work with subdomains! :) Now I have another question... instead of having it load sourcedomain.com, how can I get the mirror domain to load a specific page in sourcedomain such as sourcedomain.com/pagename? I tried making $wc_source = sourcedomain.com/pagename and it doesn't work.
Ok, my bad for the barrage of emails. I actually figured out how to load a specific page by changing the $URI... Last question! Stylesheets actually are not loading properly... :( Any fix for this?
Ok
All is great but why after i submit data (form use POST method and Header redirect if all is correct with login)
I not get anything and home page reload without any massage or correct redirection to member page?
Thanks
you are genius ;)
Hi, Neat post. There's an issue together with your web site in internet explorer, would test this? IE still is the market chief and a big element of people will leave out your great writing due to this problem.
I have been looking for something like this for a while. I am very happy to hear you have had success with it. I am going to surprise my partner and get myself a pack of this. Hopefully it will work for me like it has for you.
I have dropped your code in, but the images and stylesheets aren't loading up.
What could the issue be?
Thanks