Module als subdomain
Ik krijg het niet voor elkaar om mijn subdomain als module te gebruiken.
Normaal gesproken hebben we dit:
http://example.com/module/controller/method
Maar ik wil mijn module in een subdomain hebben:
http://module.example.com/controller/method
Ik heb het geprobeerd op deze wijze en dat werk
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
switch ( $_SERVER['HTTP_HOST'] ) {
case 'module.example.com':
$route['default_controller'] = 'module';
break;
default:
$route['default_controller'] = 'welcome';
break;
}
case 'module.example.com':
$route['default_controller'] = 'module';
break;
default:
$route['default_controller'] = 'welcome';
break;
}
Maar als ik een ID er achter zet vind hij de pagina niet meer
http://module.example.com/controller/method/id
Ik heb ook gekeken naar htaccess manier maar daar kwam ik ook niet uit
Code (php)
1
2
2
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^module/(.*) http://module.example.com/$1 [R=301,L]
RewriteRule ^module/(.*) http://module.example.com/$1 [R=301,L]
Gewijzigd op 28/07/2015 22:50:52 door Jaco Grinwis
Heb je een aparte vhost voor dat subdomein aangemaakt?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
switch ($_SERVER['HTTP_HOST'])
{
case 'mijn.example.com':
$route['default_controller'] = 'mijn';
$route['(:any)'] = 'mijn/$1';
$route['(:any)/(:any)'] = 'mijn/$1/$2';
$route['(:any)/(:any)/(:any)'] = 'mijn/$1/$2/$3';
break;
case 'admin.example.com':
$route['default_controller'] = 'admin';
$route['(:any)'] = 'admin/$1';
$route['(:any)/(:any)'] = 'admin/$1/$2';
$route['(:any)/(:any)/(:any)'] = 'admin/$1/$2/$3';
break;
default:
$route['default_controller'] = 'welcome';
break;
}
{
case 'mijn.example.com':
$route['default_controller'] = 'mijn';
$route['(:any)'] = 'mijn/$1';
$route['(:any)/(:any)'] = 'mijn/$1/$2';
$route['(:any)/(:any)/(:any)'] = 'mijn/$1/$2/$3';
break;
case 'admin.example.com':
$route['default_controller'] = 'admin';
$route['(:any)'] = 'admin/$1';
$route['(:any)/(:any)'] = 'admin/$1/$2';
$route['(:any)/(:any)/(:any)'] = 'admin/$1/$2/$3';
break;
default:
$route['default_controller'] = 'welcome';
break;
}
Alleen moet ik alle routes nu denk ik wel in het hoofd routes bestand doen en kan het niet in het routes bestand in de module zelf.
Toevoeging op 28/07/2015 22:51:46:
Ozzie PHP op 28/07/2015 22:40:42:
Heb je een aparte vhost voor dat subdomein aangemaakt?
ja die heb ik aangemaakt.
Het is echt niet goed in elkaar gezet.
Het werkt wel en is makkelijk aan te leren, maar het heeft niet echt iets OOP.
Je bent met techniek aan het werk wat verouderd is.
Ookal is versie 3.0 er nu, er zijn geen dingen als Dependency Injection of het implementeren van Interfaces.
Dit de dag is allemaal super handig en belangrijk voor jou ontwikkeling als programmeur.
Ik zelf ben 2 jaar bezig geweest met een CMS genaamd LEMON Admin maar heb spijt dat ik het niet in iets als Symfony2 hebt geschreven.
Bij mijn huidige werk werd CI ook afgeraden en begreep dat niet..... totdat ik nu 8 maanden verder ben... nu raadt ik het zelf iedereen af.
Het is leuk om mee te beginnen maar je kan je echt veel beter verdiepen in een ander Framework, iets wat veel meer bij de tijd past.
Symfony2 is mijn advies.
Wat ik heb gedaan is mijn Admin module geladen als module zelf.
Ook heb ik dynamische languages die ik aan de hand van een DB inlaadt en daarom er dus een implode staat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
##
# ROUTES
# These routes are needed by CI
##
$route['default_controller'] = $config['default_controller'];
# Language redirects for the lemonadmin system
$route["^(" . implode('|', $language_result) . ")?/lemonadmin"] = 'lemonadmin';
// OUTPUT
$route["nl_NL|en_GB/lemonadmin"] = 'lemonadmin';
?>
##
# ROUTES
# These routes are needed by CI
##
$route['default_controller'] = $config['default_controller'];
# Language redirects for the lemonadmin system
$route["^(" . implode('|', $language_result) . ")?/lemonadmin"] = 'lemonadmin';
// OUTPUT
$route["nl_NL|en_GB/lemonadmin"] = 'lemonadmin';
?>
Omdat mijn gebruikers soms de talen niet snappen heb ik er een fix voor gemaakt. Zo kunnen ze het domein opvragen met taal specificatie en toch het CMS benaderen.
Daarnaast heb ik aangegeven dat mijn module "lemonadmin" benaderd mag worden via de url
Code (php)
1
2
3
2
3
<?php
$config['controller_exceptions'] = array('lemonadmin', 'custom/contactsend', 'shop');
?>
$config['controller_exceptions'] = array('lemonadmin', 'custom/contactsend', 'shop');
?>
Ik heb dan ook een andere mappen structuur dan CI normaal opgeeft.
Dit regelt de voorkant van de website
application
-- controllers
---- page_controller
Dit is mijn lemonadmin gedeelte (framework bevind zich wel in de root folder net als waar application staat)
framework
-- coremodules
---- lemonadmin
------ controllers