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