Subdomain und simulierte .htm

URLs umschreiben, umleiten, blocken oder sperren - all das und noch viel mehr kann mit mod_rewrite erreicht werden. Mit regulären Ausdrücken, Conditions und Rules stehst Du auf Kriegsfuss? mod_rewrite macht nicht das was Du willst, oder funktioniert gar nicht? hier bist Du richtig!

Moderatoren: Bob, Super-Mod

Subdomain und simulierte .htm

Beitragvon wannabe » 23.06.2007 08:22

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?
wannabe
.
.
 
Beiträge: 10
Registriert: 10.01.2006 23:29

Beitragvon Gumbo » 23.06.2007 14:03

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]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon wannabe » 23.06.2007 19:19

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?
wannabe
.
.
 
Beiträge: 10
Registriert: 10.01.2006 23:29

Beitragvon wannabe » 24.06.2007 03:06

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]
wannabe
.
.
 
Beiträge: 10
Registriert: 10.01.2006 23:29

Beitragvon Gumbo » 24.06.2007 10:24

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.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon wannabe » 24.06.2007 12:31

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
wannabe
.
.
 
Beiträge: 10
Registriert: 10.01.2006 23:29

Re: Subdomain und simulierte .htm

Beitragvon Kylee » 12.08.2010 15:26

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
Wissen ist Macht, Nichts wissen macht auch nichts.
Kylee
.
.
 
Beiträge: 90
Registriert: 22.05.2007 13:28
Wohnort: Marbella, Spanien


Zurück zu mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast