10376 Posts in 2191 Topics by 1708 members
| Go to End | Next > | |
| Author | Topic: | 4249 Views |
-
Re: Subsite module, DNS configuration

5 May 2010 at 7:16pm Last edited: 5 May 2010 7:22pm
PS Benny in the .htaccess I have also tried subsite1.mysilverstripe, since I want to access the subsite via http://subsite1.mysilverstripe
# Subsite rewrite
RewriteCond %{REQUEST_URI} !(\.gif)|(\.jpg)|(\.png)|(\.css)|(\.js)|(\.php)$
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^subsite1.mysilverstripe$
RewriteRule .* sapphire/main.php?url=%{REQUEST_URI}&SubsiteID=1&%{QUERY_STRING} [L]and Benny i presume your vhost.conf is the equivalent (the file I should be trying to replicate on my WAMP machine) of my WAMP httpd-vhosts.conf files??? I'm not 100% sure.
-
Re: Subsite module, DNS configuration

6 May 2010 at 4:09am
I'm not sure how you should go about testing this out on a WAMP server. I was doing all of this on a server running Plesk (which manages much of Apache's configuration).
You probably need to take a look at how to set up multiple domains on a WAMP server first. http://www.google.com/search?aq=1&oq=wamp+mult&sourceid=chrome&ie=UTF-8&q=wamp+multiple+domains Once you have two working and configurable domains on your machine I think you should be able to start making the subsite specific changes.
-
Re: Subsite module, DNS configuration

7 May 2010 at 4:34pm
Benny I think that is what I have been doing as far as I know (setting up multiple domains). eg
On Wamp you edit the "hosts" file
127.0.0.1 localhost
127.0.0.1 mysilverstripe
127.0.0.1 subsite1.mysilverstripeand then edit httpd-vhosts.conf
and add in a <VirtualHost> chunk for each domain, or use the serveralias tag also
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "f:/wamp/www/silverstripe/silverstripe-v2.4.0-rc2"
ServerName mysilverstripe
ErrorLog "logs/mysilverstripe.log"
CustomLog "logs/mysilverstripe.log" common
<directory "f:/wamp/www/silverstripe/silverstripe-v2.4.0-rc2">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</directory></VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "f:/wamp/www/silverstripe/silverstripe-v2.4.0-rc2"
ServerName subsite1.mysilverstripe
ErrorLog "logs/mysilverstripe.log"
CustomLog "logs/mysilverstripe.log" common
<directory "f:/wamp/www/silverstripe/silverstripe-v2.4.0-rc2">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</directory></VirtualHost>
now when I go to
mysilverstripe or subsite1.mysilverstripe they both go to the same main home page of the silverstripe site.
Any ideas?
-
Re: Subsite module, DNS configuration

8 May 2010 at 1:07am
If both domains on your WAMP server are resolving to the same SilverStripe site, then it sounds like your set up works. You just need to correctly intercept the domain name in the .htaccess file and append the SubsiteID.
-
Re: Subsite module, DNS configuration

10 May 2010 at 1:56pm Last edited: 10 May 2010 2:10pm
bennylope because I am on the grid service I don't have access to vhost.conf and MT have just said to use the .htaccess file
So I presume your working setup will not function for me... Does that mean I am out of options for getting this thing to run correctly?
I mean I guess I could always just create a subsites.mydomain.com directory and then create a file that redirects to the subsites page eg:
http://mydomain.com/subhome?SubsiteID=1It kind of makes it difficult for when someone makes a subsite though as I would have to go and create this redirect manually, not something I really want to be doing actually.
I have tried to contact Sam the guy that wrote the subsites module and some of the other Silverstripe developers but I haven't been able to get any assistance.
Any other ideas?
-
Re: Subsite module, DNS configuration

11 May 2010 at 5:22am
I'd try simply creating another domain, whether a subdomain on your Grid Service domain or registered without hosting, and then set the A Record for that domain to point at your primary domain. With the .htaccess file in place, this should provide the correct subsite.
This is conjectural however, and I haven't tested it out myself.
-
Re: Subsite module, DNS configuration

11 May 2010 at 6:26pm
Bennylope I have not tried what you suggested in your last post, but back trying to get my WAMP to run it, to best show you my setup I have collated an image together showing the screenshots of what my subsites setup looks like.
http://www.flickr.com/photos/42659897@N08/4597647580/sizes/l/
WillR said that getting subdomains to resolve are the bulk of peoples troubles with the module and to go through the subsite.php and debug the getSubsiteID function to find out what is going wrong.
I've done my best to try and get some information from the variables to work on what is going on and atempt to do some cross checking but I don't seem to be getting to far with it, all
#Debug::show($host); gives me is subsite1.mysilverstripe
Got any ideas on what or how I should be debugging this to work out what is going on?
/**
* Get a matching subsite for the given host, or for the current HTTP_HOST.
*
* @param $host The host to find the subsite for. If not specified, $_SERVER['HTTP_HOST']
* is used.
*
* @return int Subsite ID
*/
static function getSubsiteIDForDomain($host = null, $returnMainIfNotFound = true) {
if($host == null) $host = $_SERVER['HTTP_HOST'];
$host = str_replace('www.','',$host);
$SQL_host = Convert::raw2sql($host);
$matchingDomains = DataObject::get("SubsiteDomain", "'$SQL_host' LIKE replace(\"SubsiteDomain\".\"Domain\",'*','%')",
"\"IsPrimary\" DESC", "INNER JOIN \"Subsite\" ON \"Subsite\".\"ID\" = \"SubsiteDomain\".\"SubsiteID\" AND
\"Subsite\".\"IsPublic\"=1");
if($matchingDomains) {
$subsiteIDs = array_unique($matchingDomains->column('SubsiteID'));
if(sizeof($subsiteIDs) > 1) user_error("Multiple subsites match '$host'", E_USER_WARNING);
return $subsiteIDs[0];
}
// Check for a 'default' subsite
if ($default = DataObject::get_one('Subsite', "\"DefaultSite\" = 1")) {
return $default->ID;
}
// Default subsite id = 0, the main site
return 0;Another related function
/**
* This function gets the current subsite ID from the session. It used in the backend so Ajax requests
* use the correct subsite. The frontend handles subsites differently. It calls getSubsiteIDForDomain
* directly from ModelAsController::getNestedController. Only gets Subsite instances which have their
* {@link IsPublic} flag set to TRUE.
*
* You can simulate subsite access without creating virtual hosts by appending ?SubsiteID=<ID> to the request.
*
* @todo Pass $request object from controller so we don't have to rely on $_REQUEST
*
* @param boolean $cache
* @return int ID of the current subsite instance
*/
static function currentSubsiteID() {
if(isset($_REQUEST['SubsiteID'])) $id = (int)$_REQUEST['SubsiteID'];
else $id = Session::get('SubsiteID');if($id === NULL) {
$id = self::getSubsiteIDForDomain();
Session::set('SubsiteID', $id);
}return (int)$id;
}Did you try doing this at all???
-
Re: Subsite module, DNS configuration

11 May 2010 at 7:38pm
bennylope ignore my last post about getting it working on WAMP, it is now working thank the lord!
I had to have
subsite1.mysilverstripe
as the domain in the backend of the CMS subsite section if I want to access subsite1 via subsite1.mysilverstripe
now to try and figure out a solution for a grid service where I can't access the apache virtual host files...
| 4249 Views | ||
| Go to Top | Next > |

