PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Weiterleitung auf www.



Xenon
07.05.2008, 19:39
Hallo
meinche kennen es von euch , user klicken auf eurer seite ohne www. vorher und so wird der referer nicht richtig übergeben und man wird nicht vergütet vom sponsor , da gibt es eine abhilfe :
Öffne die lib/header.php und suche folgendes :

<?
require ('lib/functions.lib.php');
db_connect();
require ('lib/session.lib.php');
require ('lib/layout.lib.php');
require ( 'lib/extras.lib.php' );
if (!isset($_GET['content']) || empty ($_GET['content'])) $_GET['content'] = '/intern/startseite';

if (!file_exists('content'.$_GET['content'].'.php')) $_GET['content'] = '/error/keine_seite';

?>
und füge folgendes darunter :


<?PHP
if ( substr ( $_SERVER['SERVER_NAME'], 0, 4 ) != 'www.' )
{
header ( 'location: http://www.' . $_SERVER['SERVER_NAME'] );
exit ();
}
?>


Speichern und hochladen , und dann sollte es funkionieren , troz test garantiere ich keine fehlerfreie funkion .


Sollten fragen bestehen könnt ihr ruhig hier fragen .


MFG
adi

Gremlin
07.05.2008, 19:49
Nicht schön da parameter nicht übergeben werden Mit Referer hat das ganze aber nix zu tun. Mit Subdomains funktioniert es auch nicht. etc. besser ist mit mod_rewrite


erstelle eine .htaccess mit folgendem Inhalt:


Rewrite Engine On
RewriteCond %{HTTP_HOST} !^www\.domain\.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
Wichtig: Server erfordert mod_rewrite, domainname muss angepasst werden.

Maddin
07.05.2008, 19:53
Ach toll das wollte ich gerade schreiben...:(

Xenon
07.05.2008, 19:53
Da will man einma helfen :rolleyes: .

Aber bei gremlin ist die grundvorraussetzung mod_rewriter bei mir braucht man (laut tests) keine vorraussetzung auser das php vorhanden sein muss :biggrin1: .


MFG
adi

Gremlin
07.05.2008, 19:56
Dann hänge trotzdem queries dran $_SERVER['HTTP_QUERY_STRING'] :biggrin1:

Maddin
07.05.2008, 19:56
Naja ehhm Mod_Rewrite ist eigentlich Standard...
also das sollte man schon an haben weil sonst macht man noch mit solchen "unschönen" URLs rum: index.php?site=impressum und dann mag Google dich auch nicht.

Daher muss ich da Gremlin voll und ganz recht geben. Also entweder ganz oder garnicht, sry.

Xenon
07.05.2008, 19:59
Ok , gremlin hatte mal wieder recht bwz. die besseren karten :frusty: , aber für so einen php nob wie mich sollte es eig. gut sein , oder ?


MFG
adi

jpwfour
07.05.2008, 20:24
hab die beiden beispiele nicht explizit getestet, aber ist es nicht so, dass bei der version mit mod_rewrite die url für den user "gleich" bleibt, nur intern mit dem www davor verwendet wird, bei code von adi aber beides geändert wird, da der user ja dirket auf die url nur mit www davor geleitet wird?

in dem falle finde ich version 1 besser, da ja dann alle internen links auch mit dem www davor sind (sofern auch so in der functions.lib.php eingetragen), also sollte es dann gar nicht mehr vorkommen,d ass user die seite mit querystrings etc. ohne www aufrufen.

Gremlin
07.05.2008, 20:30
Mit [R=301] macht mod_rewrite ne Weiterleitung ruf mal

http://joke-factory.de auf da habe ich Umleitung auf mit www also ändert sich auch im Browser.

Gruß
Gremlin

jpwfour
07.05.2008, 21:18
ah gut okay, wie gesagt, hatte die cods ja nicht getestet.
in dem fall ist natürlich die methode mit mod_rewrite am elegantesten :thumb:

eaxo
26.06.2008, 01:39
Hmmm... ich habe bei meinem Anbieter das Problem das ich die bereits bestehenden .htaccess nicht angezeigt bekomme.
Also weiss ich nicht ob dort schon was steht was ich übernehmen müsste.

Gibts da einen Workaround?

eaxo

Gremlin
26.06.2008, 02:32
Wieso bekommst du die nicht angezeigt :eek:.

Benutzer1699
26.06.2008, 02:48
Aufgrund des schlechten FTP-Programmes ;)

www.winscp.com

eaxo
26.06.2008, 18:01
Entschuldigt das ich erst jetzt antworte.

Das ich die .htaccess nicht angezeigt bekomme kann ich eigentlich nicht am FTP-Programm festmachen.

Ich arbeite seit Jahr und Tag mit Total Commander, seit relativ kurzer Zeit auch mit FileZilla und der Firefox-Erweiterung FireFTP. Getestet habe ich darüberhinaus wsFTP und SmartFTP.

Alle, ohne Ausnahme, zeigen die .htaccess auf einem 1blu Space. Bei meinem Anbieter jedoch ist die htaccess nicht zu sehen und somit auch nicht zu editieren.
In neu erstellten Ordnern stellt das natürlich kein Problem dar, ich speichere die Datei lokal als .htacess.txt lade sie 2x hoch und entferne das Suffix beim ersten mal. So ist die zwar unsichtbar, aber über die Kopie jederzeit nachvollziehbar.

Im Root vermute ich jedoch Einträge. Daher die Frage.

eaxo

jpwfour
26.06.2008, 20:24
hm, das erste was ich machen würde, ist dem hoster ml gehörig auf die nerven gehen, bis er das ändert :biggrin1:

es kann am ftp server liegen, dass dieser versteckte dateien nicht anzeigt, obwohl der client dies angefordert hat, in diesem falle benutzt der hoster aber schlechte/veraltete software.

an dir kann es ja nun nicht mehr liegen, wenn du schon soviele programme ausprobiert hast, und bei allen auch "versteckte dateien anzeigen" aktiviert hast.

aber zu deiner grundfrage:


Also weiss ich nicht ob dort schon was steht was ich übernehmen müsste.

sofern du nichts eingetragen hast, sollte da (aber auch nur bei guten hoster bzw. nicht total schlechten) noch gar nichts stehen...

eaxo
26.06.2008, 20:44
Hab den Hoster schon angeschrieben. Der Support hat tatsächlich festgestellt das versteckte Dateien per FTP bei mir (und wohl einigen anderen) nicht angezeigt werden.
Es wird grad geprüft woran das wohl liegen kann. Über das Web-Interface geht es jetzt, scheint ein Rechteproblem zu sein.

Hat sich dann wohl bald erledigt, danke bis hierhin :smile:

eaxo

EDIT:

So, jetzt sehe ich die .htaccess wenn ich sie hochlade.

Das Problem ist jetzt aber das alle URLs die auf den Space verweisen einen internal Server Error verursachen. Dabei ist es egal wohin ich die .htaccess speichere.

mod_rewrite ist in Apache geladen, Infos über Restriktionen in der httpd.conf habe ich angefragt.

1 Domain verweist auf /
3 weitere Domains verweisen auf je einen eigenen Ordner

Ich werde dann wohl doch die php-Variante nehmen müssen, daher frag ich nochmal was Gremlin mit
Dann hänge trotzdem queries dran $_SERVER['HTTP_QUERY_STRING'] :biggrin1:
meinte?

Benutzer1699
27.06.2008, 03:42
Wenn du einen User umleitest, der z.B. auf:

http://seite.de/?content=/betteln&ref=1234567890

gekommen ist, fällt ja unter die Kategorie: wird weiter geleitet auf www.seite.de
Wenn man jetzt den $_SERVER['QUERY_STRING'] nicht mit anhängt, ist der User ggf. verwirrt bzw. landet auf der Startseite, obgleich dies nicht gewollt war.

Daher nicht auf www.seite.de umleiten, sondern die aufgerufene URL um www. erweitern!

Thor82
28.06.2008, 11:27
Bin bei 1u1 gehostet und gremlins Weiterleitung hat bei mir auch nicht gefunzt. Aber so funzt sie
RewriteEngine On
RewriteCond %{HTTP_HOST} ^klammzentrale.de$ [NC]
RewriteRule ^(.*) http://www.klammzentrale.de/$1 [R=301]

Xenon
28.06.2008, 11:34
:::::edit:::::

Thor82
28.06.2008, 11:49
Du fragst mich sachen. Kenne mich mit der .htaccess auch nicht aus. Habe den code nur in einem anderen Forum gefunden und bei mir funzt der

eaxo
01.07.2008, 08:20
Die von Thor gepostete Datei produziert auch einen Fehler bei mir.

Da ich aber gerade eben in einer Mail gelesen habe das ich umziehen werde, teste ich das mal bei meinem neuen Hoster.

Danke fürs erste
eaxo

Benutzer1699
01.07.2008, 17:43
Also, ich nehme die hier:



RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^ztk-lose\.de$ [NC]
RewriteRule ^(.*) http://www.ztk-lose.de%{REQUEST_URI} [L,R=301]



Dürfte evt. auch für andere interessant sein, da hier die URL-Anhänge mit überschrieben werden.

Roadstar
09.07.2008, 15:52
Wie sieht den das mit Subdomains aus?

Wenn ich das mit der .htaccess Datei mache und dann die Subdomain aufrufe,
kommt ein 403 Fehler.

Was muß ich ändern, damit die Subdomain davon ausgeschlossen wird?

Benutzer1699
10.07.2008, 00:37
Dürfte mit folgendem Code funktionieren:



RewriteCond %{HTTP_HOST} ^subdomain.ztk-lose\.de$ [NC]
RewriteRule ^(.*) http://subdomain.ztk-lose.de%{REQUEST_URI} [L,R=301]

Chrissi01
25.07.2008, 01:35
leider funzt die Methode nicht bei mir mit der htaccess Datei.

:-((

Gruß
Chrissi01

Xenon
25.07.2008, 10:00
Hoster Anschreiben und ihn bitten Mod_rewrite anzumachen :thumb:

Dany
06.10.2008, 22:42
Also, ich nehme die hier:



RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^ztk-lose\.de$ [NC]
RewriteRule ^(.*) http://www.ztk-lose.de%{REQUEST_URI} [L,R=301]



Dürfte evt. auch für andere interessant sein, da hier die URL-Anhänge mit überschrieben werden.


Gerade hier drauf gestoßen... funktioniert bei mir Super auch mit Subdomains

Gruß Dany

Everlast3310
15.05.2009, 22:43
Jemand bei 1u1 gehostet, bei dem das ganze funktioniert? Habe alle gepostste Varianten ausprobiert und bekomme immer nen 500er Error

Und ja mod_rewrite ist aktiviert

Gremlin
15.05.2009, 22:52
Mach mal noch an den Anfang der .htaccess ein



Options +FollowSymLinks

Everlast3310
15.05.2009, 23:11
Funktioniert, dankeschön:thumb:

tampulin
16.05.2009, 16:22

Gremlin
16.05.2009, 16:31
Wer das ganze noch - aus SEO sicht - optimieren möchte knallt noch ein:



header("Status: 301 Moved Permanently");


jeweils vor das:


header('Location: '.$domain.''

:wink:

breaker
13.06.2009, 22:20
Nicht schön da parameter nicht übergeben werden Mit Referer hat das ganze aber nix zu tun. Mit Subdomains funktioniert es auch nicht. etc. besser ist mit mod_rewrite


erstelle eine .htaccess mit folgendem Inhalt:


Rewrite Engine On
RewriteCond %{HTTP_HOST} !^www\.domain\.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
Wichtig: Server erfordert mod_rewrite, domainname muss angepasst werden.


Müsste das nicht so geschrieben werden?

RewriteCond %{HTTP_HOST} !^www\.domain\.de/$

Das wäre nämlich auch witzig in Sachen Double-Content,.....es ist ja der gleiche Inhalt auf der Seite www.domain.foo und domain.foo vorhanden....damit könnte man sowas umgehen :)

jpwfour
14.06.2009, 13:13
Wie kommst du auf den Slash vor dem "End-of-Line" Zeichen ($) ?

Rallef
17.06.2009, 00:16
... und wenn man einfach im Confixx oder Plesk von Domain.de auf www.Domain.de weiterleitet?

Wenn sowieso mit und ohne www. die selbe Seite aufgerufen wird, ist das doch die einfachste Möglichkeit - oder nicht? Warum sollte ich mich dann umständlich mit php verkünsteln :whistle:

Xenon
17.06.2009, 15:24
... und wenn man einfach im Confixx oder Plesk von Domain.de auf www.Domain.de (http://www.Domain.de) weiterleitet?

Wenn sowieso mit und ohne www. die selbe Seite aufgerufen wird, ist das doch die einfachste Möglichkeit - oder nicht? Warum sollte ich mich dann umständlich mit php verkünsteln :whistle:
Möglich ja ;)
Du hast deine Seite als Referer bei sponsoren mit oder ohne www. eingetragen , hast du sie mit www. dann ist es besser das sie darafu hin weitergeleitet wird. :thumb:

Lokutos
17.06.2009, 16:10
... und wenn man einfach im Confixx oder Plesk von Domain.de auf www.Domain.de (http://www.Domain.de) weiterleitet?

Wenn sowieso mit und ohne www. die selbe Seite aufgerufen wird, ist das doch die einfachste Möglichkeit - oder nicht? Warum sollte ich mich dann umständlich mit php verkünsteln :whistle:


ist ja das selbe wi htaccess nur das die datei dan vom plesk angelet wird

:biggrin1:

breaker
18.06.2009, 22:45
Wie kommst du auf den Slash vor dem "End-of-Line" Zeichen ($) ?

Na, wenn du von zb. googler gleich auf diese Seite kommst:

domain.foo/forum/index.php

wirst du zu dieser umgeleitet:

www.domain.foo (http://www.domain.foo)//forum/index.php

Weil du beim RewriteCond kein Slash, beim RewriteRule aber eins angegeben hast.
Das ist auch kein "EOL", sondern ein Platzhalter für ein beliebigen String, welcher dort stehen kann ;)

jpwfour
19.06.2009, 13:28
...
Das ist auch kein "EOL", sondern ein Platzhalter für ein beliebigen String, welcher dort stehen kann ;)

Aha, da wäre ja mal Interessant, woher du dein Wissen hast.

In der RewriteCond steht meines Wissens nach das Dollarzeichen schon für End-Of-Line


RewriteCond TestString CondPattern
(...)
Remember: CondPattern is a standard Extended Regular Expression with some additions:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteCond

Dazu kommt, dass ja dort auch die Variable HTTP_HOST geprüft wird, und dieser Afaik nur aus xxx.DOMAIN.TLD besteht.


Na, wenn du von zb. googler gleich auf diese Seite kommst:

domain.foo/forum/index.php

wirst du zu dieser umgeleitet:

www.domain.foo (http://www.domain.foo/)//forum/index.php

Weil du beim RewriteCond kein Slash, beim RewriteRule aber eins angegeben hast.


a) kann ich dieses Verhalten nicht reproduzieren (Du?)
b) macht es auch nicht wirklich Sinn, da

RewriteRule Pattern Substitution
Da die RewriteCond doch gar nicht vorkommt, diese nur dazu führen kann, dass bzw. ob die RewriteRule ausgelöst wird.

Also wenn du deine Feststellungen belegen kannst, lasse ich mich da gerne eines Besseren belehren, wobei deine Methode tatsächlich auch normal funktioniert, bzw. zw. den beiden konnte ich keinen Unterschied in der Funktionsweise feststellen.

breaker
19.06.2009, 23:19
Das wäre eine Simples Rewrite für ein Forum:



RewriteRule ^[fF]orum-topic([0-9.]*)-(prev)\.html modules.php?name=Forum&topic=$1;prev_next=$2 [L]

Demnach müsste das Umschreiben ja nach dem $1 aufhören ;)

Ich kenne mich jetzt nicht so besonders mit Mod-Rewrite aus, aber meine eigene Umschreibung:


RewriteRule ^pwc_forced_rally\.htm(l?) pwc_forced_rally.php [L]
RewriteRule ^pwc_forced_rally-([0-9a-zA-Z]*)\.htm(l?) pwc_forced_rally.php?ref=$1 [L]

läuft perfekt


Aha, da wäre ja mal Interessant, woher du dein Wissen hast.

In der RewriteCond steht meines Wissens nach das Dollarzeichen schon für End-Of-Line


http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteCond

Dazu kommt, dass ja dort auch die Variable HTTP_HOST geprüft wird, und dieser Afaik nur aus xxx.DOMAIN.TLD besteht.



a) kann ich dieses Verhalten nicht reproduzieren (Du?)
b) macht es auch nicht wirklich Sinn, da

Da die RewriteCond doch gar nicht vorkommt, diese nur dazu führen kann, dass bzw. ob die RewriteRule ausgelöst wird.

Also wenn du deine Feststellungen belegen kannst, lasse ich mich da gerne eines Besseren belehren, wobei deine Methode tatsächlich auch normal funktioniert, bzw. zw. den beiden konnte ich keinen Unterschied in der Funktionsweise feststellen.

Sebmaster
19.06.2009, 23:31
Demnach müsste das Umschreiben ja nach dem $1 aufhören ;)

Nö, das $1 steht ja im Replace-Teil und nicht in der Cond:wink:

breaker
20.06.2009, 07:31
Nö, das $1 steht ja im Replace-Teil und nicht in der Cond:wink:

Siehst du....bin ich schon wieder ein kleines Stückchen schlauer im Mod-Rewrite :D

Sebmaster
20.06.2009, 12:36
Siehst du....bin ich schon wieder ein kleines Stückchen schlauer im Mod-Rewrite :D

Joa, ist halt ein Regex, $[Zahl] ist halt für Referenzen zuständig, die durch Klammern "(Dieser Text steht in \$1)" erzeugt werden:wink:

breaker
20.06.2009, 13:09
Joa, ist halt ein Regex, $[Zahl] ist halt für Referenzen zuständig, die durch Klammern "(Dieser Text steht in \$1)" erzeugt werden:wink:


Boah..erzähl mir nichts von Regex.....ich hasse es :D

Für den Mist hier habe ich fast 5 Stunden gebraucht :D



$_SERVER['PHP_SELF'] = preg_replace('#^[\\\\/]+#', '/', dirname($_SERVER['PHP_SELF']) . '/extensions.php');

$pattern = '!(<a(?:[^>]+)href=["\']|<link>)(?:' . preg_quote(__CORE_URL__, '!') . ')?extensions\.php\?((?:[[:alnum:]\=&_.;]|&amp;)+)(#[^"\']+)?(["\']|</link>)!i';

Sebmaster
20.06.2009, 13:15
Für den Mist hier habe ich fast 5 Stunden gebraucht :D

Und was tut der?:biggrin1:

breaker
20.06.2009, 13:35
Die 1. Zeile fixt einen Bug welcher auf manchen Servern auftritt und die 2. Zeile verhindert ein PHP-Injection, damit sowas wie domain.foo?ext=display&home_url=http://noob.domain.foo/dirty_code.php nicht möglich ist :)

Sebmaster
20.06.2009, 13:37
Oha:suspicious:

Das ist mir zu hoch, ich musste bisher nur nen erweiterten dynamischen BB-Code Parser schreiben:biggrin1:

tampulin
20.06.2009, 14:17

breaker
28.06.2009, 10:33
Ich könnte ja jetzt etwas sagen ... aber .... ich hab da noch irgendwo n code für .htaccess rmfliegen, der dir sicher die 5 Stunden Arbeit erspart hätte *fg*

Und nein, ich habe jetzt keine Lust die Server abzuklappern wo ich den drin hab =)

Edit: mein nächster Beitrag wird wieder etwas produktiver - der 42. *für die Nachwelt festhalt* *promise*

Edit 2nd:
War wohl etwas in dieser Richtung:

RewriteEngine on
RewriteCond %{QUERY_STRING} http[:%] [NC]
RewriteRule .* /–http– [F,NC]
RewriteRule http: /–http– [F,NC]

// edit
Falscher Beitrag :o

cr00sy
21.10.2010, 21:52
Also, ich nehme die hier:



RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^ztk-lose\.de$ [NC]
RewriteRule ^(.*) http://www.ztk-lose.de%{REQUEST_URI} [L,R=301]

Dürfte evt. auch für andere interessant sein, da hier die URL-Anhänge mit überschrieben werden.
Sorry das ich dieses Thema nach oben geholt habe.

Naja, bei mir leitet er es auf www. um aber die URL-Anhänge bleiben trozdem bestehen mod_rewrite ist aktiviert. Was mach ich falsch?

chatdirwas
21.10.2010, 22:48
auf was würdet ihr weiterleiten? auf www.domain.de oder domain.de?

weil viele nur domain.de machen!

ich persönlich mache das mit www.

didith1207
21.10.2010, 22:51
mit www. sind die sponsorenvergütungen besser (weniger verluste)