Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Subdomain Weiterleitung    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
foo
Mitglied
Sehr guter User


Dabei seit: 03.04.2007
Herkunft: keine Angabe
Posts: 597
     Subdomain Weiterleitung Zitat | Bearbeiten

Einfacher redirect fuer eine Subdomain, um doppelten Suchmaschineninhalt zu vermeiden.

Ausgangslage ist eine Domain, die in einem Unterordner Content hat, der auch ueber eine Subdomain erreichbar ist.
Der Code sollte ganz am Anfang in jede Datei der Subdomain eingefuegt werden. Bei einem Forum o.ae. in einem globalen Template.
Kurz zum redirect - Serverseitige redirect sind auf jedenfall clientseitigen vorzuziehen, da auf der Clientseite keine Probleme wie ausgeschaltenes Java, Javascript oder Webfilter, die Meta Refresh nicht zulassen, entstehen koennen.
Es gibt zwei Moeglichkeiten fuer serverseitige Weiterleitungen:
Apache - .htaccess bzw mod_rewrite oder redirect in der Serverconfig - oder
Weiterleitung mit PHP.
Die .htaccess wuerde ungefaehr so aussehen:

 Code 
1:
2:
3:
4:
5:
6:
7:
8:
RewriteEngine On
rewritecond %{http_host} !^$ 
rewritecond %{http_host} !^(www\.)?domain\.de$ [NC] 
rewritecond %{http_host}<->%{REQUEST_URI} ^(www\.)?([^.]+).*<->/([^/]+) [NC]

rewritecond %2<->%3 !^(.*)<->\1$ [NC] 
RewriteRule ^(.+) /%2/$1 [L]

Falls Ihr nun keinen Zugang zur Serverconfig habt und .htaccess auf override none eingestellt ist, bleibt nur noch PHP uebrig.
Statuscode ist HTTP/1.1 301 Moved Permanently, da er suchmaschinenfreundlicher ist als 302.

Ausgangslage: Ihr moechtet "gedit.net/blog" auf "blog.gedit.net" weiterleiten:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:

<?php
$domain 
"gedit.net"// ohne www
$sub "blog.gedit.net";
$rfolder ="/blog"// Pfad, der bei $domain wegfaellt 

$url $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url strtolower($url);

// Error handle - hier nicht vergessen "/^gedit\.net" mit "/^deiner\.domain" auszutauschen
if( !preg_match"/^gedit\.net\/blog\//"$url$matchesPREG_OFFSET_CAPTURE ) &&
    !
preg_match"/^www\.gedit\.net\/blog\//"$url$matchesPREG_OFFSET_CAPTURE ) &&
    
$_SERVER['HTTP_HOST'] != $sub ){
        echo 
"<h1>error</h1>";
        echo 
"<p>Redirect from ".$url." is not permitted</p>";
        echo 
"<p><a href=\"http://".$sub."/\" title=\"Blog gedit.NET\">http://".$sub."/</a><p>";
}

// rewrite url
if( preg_match"/^gedit\.net\/blog\//"$url$matchesPREG_OFFSET_CAPTURE ) || 
    
preg_match"/^www\.gedit\.net\/blog\//"$url$matchesPREG_OFFSET_CAPTURE ) ){
//das "if" erleichtert uns um ein exit() oder die() am ende des error handles
        
$url str_replace"www."""$url );
        
$url str_replace".".$domain""$url );
        
$url str_replace$domain""$url );
        
$url str_replace$rfolder""$url );

// redirect
    
header"HTTP/1.1 301 Moved Permanently" );
    
header"Location: http://".$sub.$url );

exit();
}
?>


edit: Rechtschreibung, Formatierung


Berlin Pictures // BITV // Webdesign, HTML, CSS und Javascript Tutorials // Warum Layout mit Tabellen dumm ist

Post wurde schon 8x editiert, das letzte mal am 20.04.2007 um 01:52 von foo
18.04.2007, 14:38 Profil | PM | E-Mail  
php-fan
Mitglied
Gruenling


Dabei seit: 17.10.2007
Herkunft: keine Angabe
Posts: 17
      Zitat | Bearbeiten

Geht das auch anders rum??

Also ich gebe z. B. http://www.test.de ein und komme in das Verzeichniss! /!

Der Webserver ist so konfiguriert das zur Zeit die Sub-Domaine http://sub.test.de auch in das Verzeichniss / weitergeleitet wird.

Doch jetzt kommt mein Wunsch ich möchte das ein PHP-File das in dem Vereichniss / liegt schaut was für eine Sub angegeben wurde und dann in das entsprechende Verzeichniss verweißt!

In diesem Fall soll es dann in /sub/ geleitet werden!

Im grunde brauche ich nur die Funktion die mir das sub aus der URL http://sub.test.de in eine Variable speichert!

Ich danke für Eure Hilfe!


18.10.2007, 13:04 Profil | PM | E-Mail  
Gast


     Nickpage ? Zitat | Bearbeiten

hi,

wie geht das mit modrewrite das jeder username.domain.de bekommt die url dennoch in der eingabeleiste des brwosers stehen bleibt.

Die username.domain.de soll auf domain.de/np.php?name=username gehen wobei username , durch den jeweiligen nickname ersezt wird.

DANKE


18.10.2007, 22:45  
Gast


     koiner? Zitat | Bearbeiten

hi na wois es koiner ?



25.10.2007, 00:40  
foo
Mitglied
Sehr guter User


Dabei seit: 03.04.2007
Herkunft: keine Angabe
Posts: 597
      Zitat | Bearbeiten

Hallo,

ich glaub ihr meint sowas wie http://sourceforge.net/projects/subsystem/

Gruesze foo


Berlin Pictures // BITV // Webdesign, HTML, CSS und Javascript Tutorials // Warum Layout mit Tabellen dumm ist
31.01.2008, 14:12 Profil | PM | E-Mail  
Benny
Mitglied
Aktiver User


Dabei seit: 01.05.2007
Herkunft: Deutschland
Posts: 205
      Zitat | Bearbeiten

Hallo,

ich habs so gemacht:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
<?php
$domain 
"ts-hoster.eu"// ohne www
$sub $_SERVER['HTTP_HOST'];
$rfolder ="/freeforums"// Pfad, der bei $domain wegfaellt 

$url $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url strtolower($url);

// Error handle - hier nicht vergessen "/^gedit\.net" mit "/^deiner\.domain" auszutauschen
if( !preg_match"/^ts-hoster\.eu\/freeforums\//"$url$matchesPREG_OFFSET_CAPTURE ) &&
    !
preg_match"/^www\.ts-hoster\.eu\/freeforums\//"$url$matchesPREG_OFFSET_CAPTURE ) &&
    
$_SERVER['HTTP_HOST'] != $sub ){
        echo 
"<h1>error</h1>";
        echo 
"<p>Redirect from ".$url." is not permitted</p>";
        echo 
"<p><a href=\"http://".$sub."/\" title=\"$sub :: Freeforum by TS-Hoster.eu\">http://".$sub."/</a><p>";
}

// rewrite url
if( preg_match"/^ts-hoster\.eu\/freeforums\//"$url$matchesPREG_OFFSET_CAPTURE ) || 
    
preg_match"/^www\.ts-hoster\.eu\/freeforums\//"$url$matchesPREG_OFFSET_CAPTURE ) ){
//das "if" erleichtert uns um ein exit() oder die() am ende des error handles
        
$url str_replace"www."""$url );
        
$url str_replace".".$domain""$url );
        
$url str_replace$domain""$url );
        
$url str_replace$rfolder""$url );

// redirect
    
header"HTTP/1.1 301 Moved Permanently" );
    
header"Location: http://".$sub.$url );
}
?>


auch standartmäßig funktioniert das iwie bei mir net.

Da ich freehoster "spiele" möchte ich keine subs anlegen sondern nur mit den get variablen rumfuchteln, außer der subdomain weiterleitung funktioniert alles prima.

oder liegt es an php 5.2.6?




Post wurde schon 2x editiert, das letzte mal am 28.05.2008 um 23:35 von Benny
28.05.2008, 23:26 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Hallo,

das Script funktioniert ja soweit das es wenn du den ordner /sub mit http://domain.tld/bla aufrufst du nach http://sub.domain.tld/ weitergeleitet wirst.
Das ist das einzige was man damit macht.
Das die domain sub.domain.tld auf den ordner /sub im root-dir verweist hat mit dem script nichts zutun und loest man normalerweise, falls apache mit der config, bei einem hoster via syscp o.ae..
Schau dir mal ttp://sourceforge.net/projects/subsystem/ an, hat ich allerdings schon darueber gepostet.

Gruesze foo


04.06.2008, 11:39  
Gast


      Zitat | Bearbeiten

ich hab da son ähnliches prob und denke ich bin hier richtig:

ich möchte das man eine bestimmte seite nur x mal aufrufen kann und danach eine Fehlermeldung kommt.
Es sollten aber 3 php dokumente sein(counterabfrage,prüfung mit fehleranzeige &korekkte Anzeige) damit man
a)die counterdatei nicht einfach manipulieren kann
b)bei überschrittener Zahl nicht einfach im Quellcode der fehlerseite den Zielpfad lesen kann und dann öffnen kann.

wäre echt super wenn ihr mir sagen könntet wie ich
die countervariable per post senden kann und eine sofortige weiterleitung zur 2./3.seite passiert,damit man ja die counterdatei nicht lesen kann.

luke



26.07.2008, 00:58  
Gast


      Zitat | Bearbeiten

sry hab vergessen mir die regeln durchzulesen(~schnarch~), bitte löschen da ich dies nun in einen anderen bereich kopiere

luke


26.07.2008, 01:07  
Gast


      Zitat | Bearbeiten

http://www.tutorials.de/forum/php-tutorials/263366-subdomain-mit-php-mysql.html


da ist das kanze mit datenbank gemacht, nur leider geht dies nicht. wisst, ihr wie subdomains erstelle, die von der datenbank abgerufen werden?


30.11.2008, 09:25  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Subdomain Weiterleitung   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz