2010-10-02 9 views
6

Nie jestem bardzo doświadczonym programistą i używam CodeIgniter po raz drugi.Codeigniter, domena do określonego obszaru strony

Załóżmy, że mam stronę www.domain1.com. Tak więc będę miał, powiedzmy, 3 kontrolery/obszar1,/obszar2,/obszar3. Użytkownicy mają do nich dostęp pod adresem www.domain1.com/area1 itd., Jeśli ustawię podstawowy adres URL na www.domain1.com. Ale mój problem polega na tym, że klient chce mieć określony obszar sieci, powiedzmy area2, działający jako microsite, we własnej domenie, więc chce uzyskać dostęp do area2 za pomocą www.domain2.com.

Nie wiem, jak uzyskać to działa z CodeIgniter. Załóżmy, że rejestruje domenę www.domain2.com i ustawia ją wskazując na ten sam serwer DNS, serwer itp. W jaki sposób mogę uzyskać CodeIgnitor do wykonania obszaru kontrolera2, gdy uzyskuje się dostęp do adresu URL www.domain2.com?

Może zmiana $config['base-url']? Routing? .htaccess? Jeśli rozwiążesz ten problem, przykłady kodu będą bardzo mile widziane.

Edytuj: Podam przykład strony, którą chcę uzyskać.

Mam jedną normalną instalację CodeIgniter (host zewnętrzny, nie może uzyskać dostępu do httpd.conf) Jest na jednej maszynie, a korzeniem serwisu powinny być dostępne przez www.domain1.com

Wszystkie domeny są zarejestrowany na zewnątrz. Mam kontroler domowy, który pokazuje mi główny widok strony. Załóżmy, że witryna ma 3 obszary/obszar1,/obszar2/obszar3, wraz z odpowiednimi kontrolerami, pokazując widoki tych obszarów.

Mój klient chce podkreślić jeden z obszarów, ten, który kontroler/obszarze2 pokazuje i chce użyć innej domeny dla tego obszaru, www.domain2.com

Co mogę zrobić tak, że kiedy użytkownik przegląda www.domain2.com, CI przekierowuje je na www.domain1.com/area2? Czy mogę, na przykład, zmodyfikować $config['base_url'] zgodnie z otrzymanym adresem URL, czy jest to niemożliwe? Czy muszę zmodyfikować plik .htaccess?

+0

Jeśli mam rację, kontroler dla obszaru2 jest na tej samej domenie co wszystkie inne kontrolery? – ITroubs

+0

wszystkie kontrolery wszystkie w tym samym folderze na tym samym hostingu, tylko jedna maszyna fizyczna, jeden hosting) –

+0

Po prostu chcę móc wyświetlić/obszar2 wynik kontrolera dostęp z inną nazwą domeny, że mam dostęp do rootigniter root. –

Odpowiedz

7

Po wielu poszukiwaniach, znalazłem rozwiązanie, które wydaje się działać, bardzo łatwo być uczciwy:

Zmienić routes.php:

if ($_SERVER['HTTP_HOST']=="www.domain2.com") { 
    $route['default_controller'] = "area2"; 
} 

Nie trzeba modyfikować mod.

+0

Podoba mi się ten, musisz również upewnić się, że domain1.com nie może uzyskać dostępu do area2, np. add: if ($ _ SERVER ['HTTP_HOST'] == "www.domain1.com") {$ route ['area2'] = "diff_controller";} –

+0

Powinieneś zaakceptować odpowiedź na swoje pytania, klikając na zielony znacznik wyboru obok każdej odpowiedzi - to oznaczy pytanie jako rozwiązane i da niewielką nagrodę pytającemu i odpowiadającemu za kłopot. W takim przypadku, ponieważ rozwiązałeś swój własny problem, powinieneś przyjąć tę odpowiedź. –

+0

jest to najlepsze rozwiązanie i coś, z czego korzystam teraz. – Ash

0

Oto pomocne łącze .... http://www.askaboutphp.com/88/codeigniter-setting-up-multiple-sites-on-one-install.html Nigdy tak naprawdę nie zrobiłem tego sam, ale wydaje się, że jest to sposób, aby przejść o tym bez dwóch instalacji ci. Powodzenia.

+0

Przetestowałem na stronie ... –

+0

To nie jest tak naprawdę mój przypadek, więc nie chcę mieć takich aplikacji jak on. Chcę tylko uzyskać dostęp do części mojej jedynej aplikacji (w każdym razie jest częścią całej sieci) z inną domeną. Sprawdź przykład na mojej edycji. –

-1

Pierwsze rozwiązanie, które przychodzi mi do głowy, to użycie Apache mod_rewrite, ale o ile wiem, działałoby to tylko dla wewnętrznych przekierowań (tj. Zasobów znajdujących się na tym samym serwerze/domenie).

Co z wykorzystaniem elementu iframe? Możesz ustawić stronę domową domain2.com z pełnoekranową ramką iframe, która pobiera treść z domeny 1.com/area2.

+0

Spróbuję wtedy posłuchać możliwości mod_rewrite. Pomysł iframe też jest dobry, również spróbuję. –

0

pewno trzeba przejść drogę Mod_rewrite

+0

Spróbuję studiować możliwości mod_rewrite następnie –

Powiązane problemy