Module als subdomain

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaco Grinwis

Jaco Grinwis

28/07/2015 20:47:37
Quote Anchor link
Ik heb een vraag ik kom niet uit een probleem. Ik gebruik codeigniter 3 met hmvc.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^module/(.*) http://module.example.com/$1 [R=301,L]
Gewijzigd op 28/07/2015 22:50:52 door Jaco Grinwis
 
PHP hulp

PHP hulp

19/04/2024 16:56:54
 
Ozzie PHP

Ozzie PHP

28/07/2015 22:40:42
Quote Anchor link
Heb je een aparte vhost voor dat subdomein aangemaakt?
 
Jaco Grinwis

Jaco Grinwis

28/07/2015 22:49:58
Quote Anchor link
Denk dat ik een oplossing heb gevonden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

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.
 

29/07/2015 09:17:39
Quote Anchor link
Jaco, stop met CI.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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';
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.