porno porno izle rokettube
Ergebnis 1 bis 5 von 5

Thema: Ganze Domains als Parameter in der Route?

  1. #1
    Neuer Benutzer
    Registriert seit
    22.05.2012
    Beiträge
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard Ganze Domains als Parameter in der Route?

    Hallo ZF-Freunde!

    Ich habe es bereits hinbekommen, für mein Onlineprojekt eine Subdomain als Parameter zu routen, z.B. kunde1.meinedomain.de oder kunde2.meinedomain.de:

    Code:
    routes.portal.type = "Zend_Controller_Router_Route_Hostname"
    routes.portal.route = ":cKunde.meinedomain.de"
    routes.portal.chains.index.type = "Zend_Controller_Router_Route"
    routes.portal.chains.index.route = ":controller/:action/*"
    routes.portal.chains.index.defaults.controller = "kunden"
    routes.portal.chains.index.defaults.action = "index"
    Jetzt möchte ich noch einen Schritt weiter gehen und ermöglichen, dass man das Onlineprojekt optional zu einer Subdomain auch über eine eigene Domain erreichen kann, z.B. kunde1.de statt kunde1.meinedomain.de

    Wenn ich dazu die Zeile
    Code:
    routes.portal.route = ":cKunde.meinedomain.de"
    umschreibe in
    Code:
    routes.portal.route = ":cKunde"
    liefert mir
    Code:
    this->getRequest()->getParam('cKunde')
    in einem Controller_Plugin seltsamer Weise nichts zurück. Definiere ich die Route stattdessen so:
    Code:
    routes.portal.route = ":cKunde.de"
    liefert mir der Parameter cKunde z.B. "kunde1" wieder. Natürlich möchte ich mich aber nicht nur auf Domains mit der Endung ".de" beschränken und auch die komplette URL in dem Paremter cKunde erhalten (also inkl. einer variablen Domainendung).

    Hat jemand eine Idee, warum eine Route mit :cKunde alleine scheinbar nicht funktioniert und wie man die Route definieren müsste? Im Idealfall auch so, dass die bestehenden Subdomains erreichbar bleiben, als das Projekt z.B. unter der bisherigen URL kunde1.meinedomain.de erreichbar bleibt und parallel auch unter der neuen kunde1.de?

    Danke für jeden Tipp!
    Geändert von stryker (21.10.2015 um 09:47 Uhr)

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.479
    Thanks
    3
    Thanked 347 Times in 278 Posts

    Standard

    Zitat Zitat von stryker Beitrag anzeigen
    ...wie man die Route definieren müsste?
    Einfach hart angeben:
    Code:
    :subdomain.kunde1.de
    :subdomain.kunde2.de
    :subdomain.kunde3.com
    Eine andere Verwendung ist auch nicht vorgesehen.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. The Following User Says Thank You to Kaiuwe For This Useful Post:

    stryker (28.01.2016)

  4. #3
    Neuer Benutzer
    Registriert seit
    22.05.2012
    Beiträge
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Danke für deine Hilfe, allerdings möchte ich ja erreichen, dass das Onlineprojekt nicht nur wie bisher unter kunde1.meinedomain.de und kunde2.meinedomain.de erreichbar ist (Route: :cKunde.meinedomain.de), sondern auch unter kunde1.de bzw. kunde2.de.
    Sprich unter einer eigenen Domain und dabei den Domainnamen (bzw. alternativ/parallel die Subdomain z.B. kunde1.meinedomain.de) als Parameter cKunde auswerten können.

    Wenn ich dich richtig verstanden habe, müsste ich in meiner config.ini die Routen für jede Domain hart coden, also so etwas wie nachfolgend?

    routes.portal.route = "kunde1.de"

    Aber ich kann die gleiche Route nicht mehrfach definieren, also zusätlich zu obiger Zeile noch:

    routes.portal.route = "kunde2.de"

    und die bisherige Route für die Subdomain (falls der Kunde keine eigene Domain für sein Portal möchte):

    routes.portal.route = ":cKunde.meinedomain.de"

    Zend beachtet dann nur die zuletzt zugwiesenen Wert (was nicht sonderlicht überrascht)

    Meine Idee war sonst eine Route wie folgt anzulegen...

    routes.portal.route = ":cKunde"

    ...und dann im Controller abzufragen, wie der Wert vom Parameter cKunde ist und wenn cKunde z.B. in einer Datenbank-Tabelle mit allen gültigen Domains (cKunde-Werte) gefunden wird, entsprechend auf die Sudomain redirecten oder auf der Domain bleiben.
    Aber dieser Parameter ist wie Eingangs beschrieben leider leer.

    Ich bin wirklich ratlos, wie das zu lösen wäre mit der Domain als Wert fürden Parameter cKunde und, quasi als Fallback, die Subdomain als Wert.
    Geändert von stryker (28.01.2016 um 14:01 Uhr)

  5. #4
    Neuer Benutzer
    Registriert seit
    22.05.2012
    Beiträge
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Es nur über eine Routendefinition in der config.ini zu lösen ist meines Erachtens nicht möglich, daher habe ich es in der bootstrap wie folgt gelöst:

    PHP-Code:
    $router $frontController->getRouter();
    $cDomain $_SERVER['HTTP_HOST'];
    $aHost explode('.'$cDomain);
    $aReversedHost array_reverse($aHost);
    $cToplevelDomain $aReversedHost[0];
    $cDomain $aReversedHost[1] . '.' $cToplevelDomain;
    unset(
    $aHost$aReversedHost);
    $aDomains = array(
        
    'kunde1.de',
        
    'kunde2.de'
    );
    if (
    in_array($cDomain$aDomains)) {
        
    $route = new Zend_Controller_Router_Route_Hostname(':cKunde' '.' $cToplevelDomain);
    }
    else {
        
    $route = new Zend_Controller_Router_Route_Hostname(':cKunde.' $cDomain);
    }
    $router->addRoute('portal'$route);
    $chain = new Zend_Controller_Router_Route(
        
    ':controller/:action/*',
        array(
            
    'controller' => 'news',
            
    'action'     => 'index'
        
    )
    );
    $chainedRoute $route->chain($chain);
    $router->addRoute('portal'$chainedRoute); 

  6. #5
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.479
    Thanks
    3
    Thanked 347 Times in 278 Posts

    Standard

    Zitat Zitat von stryker Beitrag anzeigen
    Es nur über eine Routendefinition in der config.ini zu lösen ist meines Erachtens nicht möglich, daher habe ich es in der bootstrap wie folgt gelöst:
    Das wollte ich damit sagen:
    Eine andere Verwendung ist auch nicht vorgesehen.
    Zitat Zitat von stryker Beitrag anzeigen
    PHP-Code:
    $cDomain $_SERVER['HTTP_HOST']; 
    Du solltest über den FrontController an den Request kommen und dort auch an den „HTTP_HOST“.

    Mal aus dem Kopf:
    PHP-Code:
    $frontController->getRequest()->HTTP_HOST;
    // oder auch
    $frontController->getRequest()->get('HTTP_HOST'); 
    (ZF1 ist schon so lange her!)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 12.03.2010, 13:44
  2. Antworten: 0
    Letzter Beitrag: 16.11.2009, 19:03
  3. Antworten: 2
    Letzter Beitrag: 25.08.2009, 18:14
  4. Get-Parameter in Route verstecken?
    Von prowler im Forum MVC
    Antworten: 5
    Letzter Beitrag: 21.07.2008, 01:21
  5. Antworten: 1
    Letzter Beitrag: 24.05.2008, 23:42

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •