Die Mitgliedschaft ist KOSTENLOS und bietet allen registrierten Nutzern unbegrenzten Zugriff auf alle Funktionen, Ressourcen und Tools von ConsultDomain.de! Optionale Mitgliedschaftsupgrades schalten exklusive Vorteile frei, wie Profil-Signaturen mit Links, Bannerplatzierungen, Erwähnungen im wöchentlichen Newsletter und vieles mehr – individuell angepasst an Ihr Mitgliedschaftslevel!

Willkommen!

Durch Ihre Registrierung bei uns können Sie mit anderen Mitgliedern unserer Community diskutieren, teilen und private Nachrichten austauschen.

Jetzt anmelden!

.htaccess - RewriteCondition um Domain als Variable zu übergeben

AlexanderH

New member
Registriert
16. Apr. 2008
Beiträge
782
Moin,


habe eine kleine .htaccess Frage.

Nehmen wir mal an ich habe eine URL:

domain.de/index.php?domain=domain.de&seite=seitenname


Jetzt möchte ich per .htaccess daraus eine suchmaschinenfreundliche URL
basteln.

Das Problem ist folgendes. Wie drücke ich aus, dass die URL:

domain.de/seitenname

auf

domain.de/index.php?domain=domain.de&seite=seitenname

weitergeleitet wird.


Speziell die Übergabe der Domain kriege ich nicht hin.


Hat da vielleicht wer einen Tipp?



Grüße
Alexander
 
Warum ermittelst Du die Domain nicht im PHP-Script? Die Variable $_SERVER['HTTP_HOST'] liefert Dir alles, was Du brauchst.

Beispiel (entfernt Subdomain):
PHP:
$host_array = explode('.',strtolower($_SERVER['HTTP_HOST']));
$host=$host_array[count($host_array)-2].'.'.$host_array[count($host_array)-1];
Liefert Dir "domain.tld" in $host.

Oder ist die zweite "domain.de", auf der die index.php ausgeführt wird, eine andere Domain als die ebenfalls von Dir mit "domain.de" bezeichnete erste Domain?
 
Das ist das Problem.

Ich will mit dem Script mehrere Domains verwalten.

Alle Domains zeigen auf einen Ordner. Die index.php wertet die Domain aus
und liefert entsprechend Content und Daten. Ich will aber auch Unterseiten
erstellen können und dafür brauch ich suchmaschinenfreundliche URLs.

Und ich kann ja schlecht jedes mal wenn die index.php aufgerufen wird mit
nem PHP Script über fopen oder dergleichen eine neue .htaccess Datei
erstellen.

Ich bräucht sowas:
Code:
RewriteRule ^/([-_0-9a-zA-Z]*)$ index.php?domain=$2&seite=$1

Nur, dass die Domain als Variable $2 übergeben wird.


Was auch noch recht hilfreich wäre, wenn man per htaccess generell alle Domains
ohne www auf die www. Variante weiterleitet. Da hab ich schon was mit {HTTP HOST}
gelesen finds aber grad nicht.


EDIT/////

Ich glaub ich bin fündig geworden:
http://forum.df.eu/forum/showpost.php?p=260832&postcount=6

Code:
RewriteCond %{HTTP_HOST} ^([-A-Za-z0-9]+\.)*([-A-Za-z0-9]+)\.[-A-Za-z0-9]+$

Das müsst ich dann noch anpassen mal schaun ob ich das hinbekomme.
 
Zuletzt bearbeitet:
Da haben wir wohl aneinander vorbei geredet. Das Stück Script sollte der Anfang der gemeinsamen index.php für alle Domains sein und selbstverständlich nicht die .htaccess umschreiben.

Also:
domainA.tld und domainB.tld und domainC.tld zeigen alle auf ein gemeinsames Verzeichnis. Alles, was zu den domains gehören könnte (also sowohl Subdomains xyz.domainB.tld als auch Unterordner und nicht vorhandene Dateien wie www.domainC.tld/abc/nnn/) sollen in der gleichen index.php verarbeitet werden.

Dann brauchen wir zunächst eine .htaccess:
Code:
RewriteEngine on
RewriteRule   !^noexist_.*\.html - [C]
RewriteCond   /%{REQUEST_FILENAME} !-f
RewriteCond   /%{REQUEST_FILENAME} !-d
RewriteRule   ^(.+) /index.php?seite=$1
Die schickt sowohl xyz.domainB.tld mit seite= als auch www.domainC.tld/abc/nnn mit seite=abc/nnn an die gleiche index.php. Sie läßt aber vorhandene Dateien und Verzeichnisse in Ruhe, real vorhandene Dateien werden ausgeführt.

Da wir aber nichts an der Domain selbst gemacht haben, wird im ersten Fall

xyz.domainB.tld/index.php?seite= und im zweiten Fall
www.domainC.tld/index.php?seite=abc/nnn aufgerufen.

Dabei ist index.php die gleiche Datei. In der Datei käme dann mein Stück Script von oben, um abzufragen, ob es sich um domainB.tld oder domainC.tld handelt.
PHP:
$host_array = explode('.',strtolower($_SERVER['HTTP_HOST']));
$domain=$host_array[count($host_array)-2].'.'.$host_array[count($host_array)-1];

Nun hast Du im gleichen Programm den Pfad über die .htaccess als $_REQUEST['seite'] und die Domain als $domain.
 
Zuletzt bearbeitet:
Hey,

erstmal ein großes Dankeschön für deine ausführliche Hilfestellung.

Darum mag ich die Community so :)


Ich habe bereits eine ähnliche, wenn auch weniger flexible Funktion zur
Domain-Ermittlung geschrieben, allerdings ist deine hübscher, von daher
werd ich die auf jeden Fall einbauen.


Was die .htaccess angeht hab ich daran überhaupt nicht so wirklich gedacht.
Deine Datei deckt ja so ziemlich jede Eventualität ab. Das hilft mir natürlich
schon enorm.
Meinst du es wäre schlauer den 301 Redirect in dem Fall per PHP zu machen
oder besser über die htaccess? Also für die Weiterleitung auf die www. Variante.


Was deine weiteren Ausführungen angeht fällt mir nur "Oh bin ich doof"
ein... Der Übergabeparameter index.php?domain=domain.de ist einfach
überflüssig, da ich die Domain ja sowieso schon weiß.
Ich habs irgendwie doppelt gemoppelt.


Grüße
Alexander
 
Zur Weiterleitung würde ich PHP bevorzugen, bin aber nicht wirklich der .htaccess-Kenner.

Wenn Du hinter den PHP-Schnipsel noch die Zeilen setzt:
PHP:
if(strtolower($_SERVER['HTTP_HOST'])!="www.".$domain) {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.".$domain."/".$_REQUEST['seite']."/");
  header("Connection: close");
}
Dann sollte bei einer anderen als "www" oder keiner Subdomain eigentlich der Redirect auf www.domain.tld ausgeführt werden. Ist aber nicht getestet und immer in der Hoffnung, keine Endlos-Schleife zu erzeugen ;)

Eventuell sollte man auch $_REQUEST['seite'] absichern, denn das könnte ein Sicherheitsloch sein.
 
Zuletzt bearbeitet:

Who has viewed this thread (Total: 1) Details anzeigen

Wer hat dies thread angesehen? (Gesamt: 1) Details anzeigen

Neueste Themen

Beliebte Inhalte

Besonderer Dank

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
68.348
Beiträge
377.591
Mitglieder
6.777
Neuestes Mitglied
tedcars
Zurück
Oben