mod_rewrite Subdomain abfangen und übergeben

Alles, was den Apache betrifft, kann hier besprochen werden.

mod_rewrite Subdomain abfangen und übergeben

Postby agnosticmantis » 26. October 2010 13:29

Hallo,

ich würde gerne eine beliebige SubDomain abfangen und hinten im Get-Parameter übergeben.. In etwa so:

value1.domain.com/value2/value3
->
http://www.domain.com/index.php?key1=value1&key2=value2&key3=value3

Ich habe mich jetzt schon doof und dusselig gesucht. Hoffe dass mir hier geholfen werden kann.

//Edit
Achja, ganz vergessen zu erwähnen dass ich das gerne in der .htaccess machen möchte. Der vhost leitet alle unbekannten anfragen zur weiteren Verarbeitung dorthin.

Gruß
agnosticmantis
 
Posts: 6
Joined: 26. October 2010 13:18

Re: mod_rewrite Subdomain abfangen und übergeben

Postby Nobbie » 26. October 2010 14:22

Das geht auch nicht mit .htaccess und mod_rewrite, dafür ist dieses Modul nicht mächtig genug. Am einfachsten ginge das mit einem PHP Script (index.php beispielsweise), dort die URL analysieren und einen entsprechenden redirect via header("Location:....") veranlassen.

Allerdings sieht das ganze nach einer unsauberen Implementierung aus, es stellt sich die Frage, wieso überhaupt solche Requests generiert od. programmiert werden, wieso beispielsweise steht nicht im aufrufenden Dokument nicht einfach schon die gewünschte Syntax http://www.domain.com?key1=value1... anstatt von http://value1.www.domain.com? Dann braucht man auch keine Wildcard Domains in einem DNS Record zu definieren, denn irgendwo muss ja vorher schon die Domain value1.www.domain.com irgendwie aufgelöst werden, sonst wird der Host gar nicht erst erreicht.
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: mod_rewrite Subdomain abfangen und übergeben

Postby agnosticmantis » 26. October 2010 14:28

ein nicht existierender host.. z.b. keinvhost.domain.com leitet in ein verzeichnis mit lediglich einer .htaccess. Ich glaube dass mir %1 hier weiterhelfen kann. Damit kann ich die variable einer rewrite condition abfangen.

Das vorhaben mag vielleicht auf dem ersten blick unsauber aussehen ist aber so gewollt. Ich nutze ein selbstgeschriebenes mvc-framework und möchte die module über eine subdomain ansprechen können.
agnosticmantis
 
Posts: 6
Joined: 26. October 2010 13:18

Re: mod_rewrite Subdomain abfangen und übergeben

Postby Nobbie » 26. October 2010 14:37

agnosticmantis wrote:ein nicht existierender host.. z.b. keinvhost.domain.com leitet in ein verzeichnis mit lediglich einer .htaccess.


Vorausgesetzt, der nicht existierende Host besitzt eine gültige IP (nämlich die der Domain).

agnosticmantis wrote:Ich glaube dass mir %1 hier weiterhelfen kann. Damit kann ich die variable einer rewrite condition abfangen.


Ich glaube das nicht, aber wenn Du es offensichtlich doch besser weißt, dann mache es so.

agnosticmantis wrote:Das vorhaben mag vielleicht auf dem ersten blick unsauber aussehen ist aber so gewollt. Ich nutze ein selbstgeschriebenes mvc-framework und möchte die module über eine subdomain ansprechen können.


Solche Designfehler sind meistens gewollt, aber sie sind dennoch Fehler. Wie wird der Subdomain eine IP zugeordnet?
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: mod_rewrite Subdomain abfangen und übergeben

Postby agnosticmantis » 26. October 2010 14:43

Ich habe hier gerade keine Möglichkeit %1 zu testen. Bin nur gerade darüber gestolpert.. offensichtlich besser weiß ich es nicht.

<VirtualHost *:80>
leitet in das verzeichnis. Ansonsten gibt es für jede permanente subdomain einen vhost. Für ein Modul sollen allerdings dynamische SubDomains existieren.

Und ein Designfehler definiert sich nicht dadurch dass etwas von einer Norm abweicht. Sondern dass er einen anderen Prozess oder sich selbst an unbestimmter Stelle behindert oder beeinflusst.
agnosticmantis
 
Posts: 6
Joined: 26. October 2010 13:18

Re: mod_rewrite Subdomain abfangen und übergeben

Postby Nobbie » 26. October 2010 14:50

agnosticmantis wrote:<VirtualHost *:80>
leitet in das verzeichnis


Vorausgesetzt, der Server wird überhaupt erreicht.

agnosticmantis wrote:Sondern dass er einen anderen Prozess oder sich selbst an unbestimmter Stelle behindert oder beeinflusst.


Exakt. Und Dein Designfehler behindert sich sehr. Denn er läßt sich nur sehr schwer umsetzen, zudem ist .htaccess definitiv die falsche Stelle für die Umsetzung, denn ein .htaccess steht im Kontext eines Ordners und nicht im Kontext eines VirtualHosts. Der Ordner kann auch für andere Hosts und auch für Alias usw. ein Ziel sein.

Du darfst es gerne noch so grottenfalsch machen, ich will Dir lediglich helfen in dem ich Dich auf dieses falsche Design aufmerksam mache. Selbstverständlich entscheidest Du letzendlich darüber, wie fehlerhaft die Implementierung geschieht.
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: mod_rewrite Subdomain abfangen und übergeben

Postby agnosticmantis » 26. October 2010 14:54

Vorausgesetzt, der Server wird überhaupt erreicht.

Wenn mein Server nicht erreicht wird, brauch ich mir auch keine Sorge um korrekte weiterleitungen zu machen.

Wäre es denn eine "sauberere" Lösung, jede unbekannte subdomain an ein script weiterzuleiten und sie dort zu verarbeiten?
agnosticmantis
 
Posts: 6
Joined: 26. October 2010 13:18

Re: mod_rewrite Subdomain abfangen und übergeben

Postby Nobbie » 26. October 2010 14:57

agnosticmantis wrote:
Vorausgesetzt, der Server wird überhaupt erreicht.

Wenn mein Server nicht erreicht wird, brauch ich mir auch keine Sorge um korrekte weiterleitungen zu machen.


Das ist wohl richtig (Galgenhumor). Das bedeutet eben, dass alle generierten Links a la http://value1.www.domain.com ins Leere führen. Ist es das, was Du willst?

agnosticmantis wrote:Wäre es denn eine "sauberere" Lösung, jede unbekannte subdomain an ein script weiterzuleiten und sie dort zu verarbeiten?


Nein. Sauber wäre, keine unbekannten Domains zu generieren.
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04

Re: mod_rewrite Subdomain abfangen und übergeben

Postby agnosticmantis » 26. October 2010 15:12

ich generiere die Links ja nur temporär. Die Problematik die ich im Grunde habe ist Folgende:

Mein Framework definiert sich aus Projekt -> modul -> controller -> action

Mein Gedanke war nun das Standartprojekt unter www. aufzurufen und alle anderen halt unter ihrem eigenen namen (Konvention vor Konfiguration) zu führen.
www wollte ich nun im Front-Controller mit dem Standartprojekt ersetzen. Das würde dann ungefähr so aussehen

www.domain.com -> www.domain.com/index.php?project=www&mo ... tion=index
test.domain.com -> www.domain.com/index.php?project=test&m ... tion=index

also würde ich in tieferen ebenen:

www.domain.com/main/index/do -> www.domain.com/index.php?project=www&mo ... &action=do
test.domain.com/main/index/do -> www.domain.com/index.php?project=test&m ... &action=do

umsetzen.

alternativ kann ich natürlich auch den projektnamen immer als ersten Get-Parameter übergeben, hätte aber einfach die Sub-Domain Variante lieber
agnosticmantis
 
Posts: 6
Joined: 26. October 2010 13:18

Re: mod_rewrite Subdomain abfangen und übergeben

Postby agnosticmantis » 26. October 2010 15:26

So.. habe mich da jetzt nochmal reingehangen und es zum laufen gebracht. Falls irgendjemand eine Lösung für das hier besprochene Problem benötigt:

Wichtig ist natürlich dass das hier die letzte regeln sein muss und jede vorherige die letzte sein muss falls ein match vorliegt. Alles was tatsächlich existiert muss entweder direkt durch die vhosts in ein anderes Verzeichnis oder anderweitig abgefangen werden um sich nicht selbst das Bein zu stellen. Ich nutze diesen Eintrag nun als letzten Fallback falls wirklich kein Eintrag existiert. Damit nehme ich dann quasi den eintrag im Script auf und leite entweder auf eine 404-Empfangsseite oder auf das zugehörige script. Mal schauen wie lange ich diese Lösung nutzen kann ohne an die Wand zu fahren.

Code: Select all
RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]
RewriteRule ^(.*)/(.*)$ http://www.domain.com/index.php?module=%1&controller=$1&action=$2 [R,L]


Werde ich damit Probleme bekommen melde ich mich wieder in diesem Thread. Mal schauen wie es ausgeht :)

P.S. Besonderen Dank nochmal an Nobbie für seine Hilfestellungen.

Gruß
agnosticmantis
 
Posts: 6
Joined: 26. October 2010 13:18

Re: mod_rewrite Subdomain abfangen und übergeben

Postby Nobbie » 26. October 2010 15:47

Hast Du überhaupt schon einmal gestestet, ob beispielsweise abcabc.www.domain.com (ich kenner leider den echten Domainnamen nicht) eine IP besitzt?

Nur mal als Beispiel, damit Du das Problem verstehst:

Öffne eine CMD Box (auch DOS-Box genannt) und gib dort dieses Kommando ein:

Code: Select all
ping www.google.de


Da wird Dir die IP von http://www.google.de angezeigt 209.85.135.99 und angepingt. Brich es mit Ctrl.-C ab.

Dann gib mal eine Subdomain ein:

Code: Select all
ping  abcabc.www.google.de


Und was passiert dort?

Mache mal den gleichen Test mit Deiner eigenen Domain.
Nobbie
 
Posts: 8759
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 5 guests