Seite 1 von 1

Subdomain und simulierte .htm

Verfasst: 23.06.2007 08:22
von wannabe
Hallo,

also ich hab folgendes "Problem":

Ich habe eine Portalsoftware.
Ich möchte das jede Kategorie eine eigene Subdomain ist, also kategorie.domain.de soll auf www.domain.de?index.php?Kat=kategorie weiterleiten

Code: Alles auswählen

ErrorDocument 404 /index.php
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www)\.domain\.de
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.de
RewriteRule ^$ /index.php?Kat=%1 [QSA]

Funktioniert ja auch ganz wunderbar.

Zusätzlich sollen aber unterhalb dieser Subdomains weitere $_GET's als .htm bzw ordner simuliert werden.
Beispiel:
http://kategorie.domain.de/suchen.htm
soll auf
http://www.domain.de/index.php?Kat=kategorie&a=suchen
zugreifen.
http://kategorie.domain.de/suchen/detail.htm
soll auf
http://www.domain.de/index.php?Kat=kate ... n&b=detail
zugreifen.

Kann mir jemand helfen wie ich subdomain und den Rest unter einen Hut bekomme?

Verfasst: 23.06.2007 14:03
von Gumbo

Code: Alles auswählen

RewriteCond   %{HTTP_HOST}   ^www\.example\.net$
RewriteRule   ^              -   [L]

RewriteCond   %{HTTP_HOST}              ^([^.]+)\.example\.net$
RewriteRule   ^([^/]+)\.html$           /index.php?Kat=%1&a=$1   [L,QSA]
RewriteCond   %{HTTP_HOST}              ^([^.]+)\.example\.net$
RewriteRule   ^([^/]+)/([^/]+)\.html$   /index.php?Kat=%1&a=$1&b=$2   [L,QSA]

Verfasst: 23.06.2007 19:19
von wannabe
Danke Gumbo, aber...
...da geht jetzt gar nichts mehr :-(

Meine .htaccess sieht jetzt so aus:

Code: Alles auswählen

ErrorDocument 404 /index.php
RewriteEngine on
RewriteCond   %{HTTP_HOST}   ^www\.example\.net$
RewriteRule   ^              -   [L]

RewriteCond   %{HTTP_HOST}              ^([^.]+)\.example\.net$
RewriteRule   ^([^/]+)\.htm$           /index.php?PortalKat=%1&a=$1   [L,QSA]
RewriteCond   %{HTTP_HOST}              ^([^.]+)\.example\.net$
RewriteRule   ^([^/]+)/([^/]+)\.htm$   /index.php?PortalKat=%1&a=$1&b=$2   [L,QSA]


Bei Aufruf von auto.example.net wird kein $_GET['PortalKat'] an die index.php übergeben.
Bei Aufruf von www.example.net/suchen.htm wird kein $_GET['a'] übergeben
Bei Aufruf von auto.example.net/suchen.htm wird weder $_GET['PortalKat'] noch $_GET['a'] übergeben

:-(
Hab ich was falsch gemacht?

Verfasst: 24.06.2007 03:06
von wannabe
Aaaah, okay, ich hab jetzt nochmal rumgetüftelt...

ErrorDocument 404 /index.php
RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www)\.example\.net$
RewriteRule ^$ /index.php [L,QSA]
RewriteCond %{HTTP_HOST} ^(www)\.example\.net$
RewriteRule ^([^/]+)\.htm$ /index.php?a=$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(www)\.example\.net$
RewriteRule ^([^/]+)/([^/]+)\.htm$ /index.php?PortalKat=$1&a=$2 [L,QSA]
RewriteCond %{HTTP_HOST} ^(www)\.example\.net$
RewriteRule ^([^/]+)/([^/]+)/([^/]+)\.htm$ /index.php?PortalKat=$1&a=$2&b=$3 [L,QSA]

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.net$
RewriteRule ^$ /index.php?PortalKat=%1 [L,QSA]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.net$
RewriteRule ^([^/]+)\.htm$ /index.php?PortalKat=%1&a=$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.net$
RewriteRule ^([^/]+)/([^/]+)\.htm$ /index.php?PortalKat=%1&a=$1&b=$2 [L,QSA]


Ob das jetzt so gut ist, das weiss ich nicht, aber zumindest funktioniert es erstmal.

Was jetzt noch nicht funktioniert:

a) Wenn die domain ohne www und ohne subdomain aufgerufen wird, wird ein suchen.htm nicht zu index.php?$_GET['a']

b) Wenn die domain mit www.example.net/ordner aufgerufen wird soll sie auf www.example.net/index.php?PortalKat=ordner leiten , ein www.example.net/ordner/suchen.htm dementsprechend auf www.example.net/index.php?PortalKat=ordner&a=suchen

Außerdem kann ich noch dazu sagen, dass die subdomains (wenn vorhanden) und auch alle *.htm grundsätzlich nur aus kleinen Buchstaben und Unterstrichen bestehen. Vielleicht kann das ja für eine Optimierung noch hilfreich sein...?[/code]

Verfasst: 24.06.2007 10:24
von Gumbo
Probier mal Folgendes:

Code: Alles auswählen

RewriteCond   %{REQUEST_FILENAME}   -f
RewriteRule   ^                     -   [L]

RewriteCond   %{HTTP_HOST}                     ^(www\.)?example\.net$
RewriteRule   ^                                -   [C]
RewriteRule   ^$                               /index.php   [L,QSA,C]
RewriteRule   ^([^/]+)\.htm$                   /index.php?a=$1   [L,QSA,C]
RewriteRule   ^([^/]+)$                        /index.php?PortalKat=$1   [L,QSA,C]
RewriteRule   ^([^/]+)/([^/]+)\.htm$           /index.php?PortalKat=$1&a=$2   [L,QSA,C]
RewriteRule   ^([^/]+)/([^/]+)/([^/]+)\.htm$   /index.php?PortalKat=$1&a=$2&b=$3   [L,QSA,C]
RewriteRule   ^   -

RewriteCond   %{HTTP_HOST}             ^([^.]+)\.example\.net$
RewriteRule   ^                        -   [C]
RewriteRule   ^$                       /index.php?PortalKat=%1   [L,QSA,C]
RewriteRule   ^([^/]+)\.htm$           /index.php?PortalKat=%1&a=$1   [L,QSA,C]
RewriteRule   ^([^/]+)/([^/]+)\.htm$   /index.php?PortalKat=%1&a=$1&b=$2   [L,QSA,C]
RewriteRule   ^   -
Ich habe zweich verkettete Blöcke (siehe „C“-Flag) daraus gemacht und hoffe, dass es überhaupt funktioniert.

Verfasst: 24.06.2007 12:31
von wannabe
Erstmal vielen Dank nochmal Gumbo.

Dabei funktioniert aber, wie du ja schon fast vermutet hast, gar nichts mehr.

Also hab ich es nun so:

Code: Alles auswählen

ErrorDocument 404 /index.php
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} ^(www\.)\.?example.\net$
RewriteRule ^$ /index.php [L,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)\.?example.\net$
RewriteRule ^([^/]+)$ /index.php?PortalKat=$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)\.?example.\net$
RewriteRule ^([^/]+)\.htm$ /index.php?a=$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)\.?example.\net$
RewriteRule ^([^/]+)/([^/]+)\.htm$ /index.php?PortalKat=$1&a=$2 [L,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)\.?example.\net$
RewriteRule ^([^/]+)/([^/]+)/([^/]+)\.htm$ /index.php?PortalKat=$1&a=$2&b=$3 [L,QSA]

RewriteCond %{HTTP_HOST} ^([^.]+)\.example.\net$
RewriteRule ^$ /index.php?PortalKat=%1 [L,QSA]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example.\net$
RewriteRule ^([^/]+)\.htm$ /index.php?PortalKat=%1&a=$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example.\net$
RewriteRule ^([^/]+)/([^/]+)\.htm$ /index.php?PortalKat=%1&a=$1&b=$2 [L,QSA]


Damit funktioniert wieder alles, ausser wenn keine subdomain vorhanden ist

Re: Subdomain und simulierte .htm

Verfasst: 12.08.2010 15:26
von Kylee
Hatte gerade ein ähnliches Problem und dank diesem Thread einen Lösungsansatz gefunden ...

Code: Alles auswählen


RewriteCond %{HTTP_HOST} !^(www)\.domain\.de
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.de
RewriteRule ^(.*)$ http://www.domain.de/%1/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)(.+)\.domain\.de
RewriteRule ^(.*)$ http://www.domain.de/%2/$1 [R=301,L]
Ich musste 2 Regeln definieren wegen mit und wegen ohne http://www....

LG Kylee