Weiterleitung mittels "if" oder htaccess bestimmter Dateien

Fabian17

Fabian23
ID: 304783
L
18 Mai 2007
1.674
105
Hallo,

Habe mal eine Frage an die allwissende Klammunity 8)
undzwar habe ich meine Webseite in 2 "Startseiten" unterteilt, index.php & index2.php bei der Index2.php ist die Navi entfernt worden damit der Content größer ist:


Nun sind allerdings Google Einträge mit der normalen index für die Unterseite "Forum"

habe bereits versucht mit htaccess und Variablen die alte index.php?site=forum auf index2.php?site=forum zu redirecten ist allerdings fehlgeschlagen

Mit php und "if" hab ich es auch vergebens versucht
PHP:
<?
if ($site != "forum" && $site != "forum_topic") 
header( "Location: index2.php?site=forum" ); 
?>

      <? } ?>

Wie kann ich das Problem lösen?,

Gruß,
Fabian
 
Zuletzt bearbeitet:
$site ist gar nicht definiert. Und ein Location-Header erfordert eine absolute URL.

Wenn ich das Problem richtig verstehe, musst du doch nur index.php auf index2.php umleiten?
 
Hi, es soll nur das Forum und die Gallery also index.php?site=forum sowie index.php?site=gallery auf die "breite" index2.php geleitet werden,
 
Du musst vor dein Script noch per $_GET deine Variable $site bestimmen:

PHP:
$site = $_GET['site'];
Und ein Location-Header erfordert eine absolute URL.

Seit wann denn das? Bei mir funktioniert es ohne Probleme auch bei relativen...
 
Zuletzt bearbeitet von einem Moderator:
Seit wann denn das? Bei mir funktioniert es ohne Probleme auch bei relativen...
Seit Mai 1996:
https://tools.ietf.org/html/rfc1945#section-10.11

Das war schon immer so. Fehlertolerante Useragents können auch mit einer relativen URI umgehen, aber als Programmierer darfst du dich auf sowas nicht verlassen und hast dich an die Standards zu halten!

edit:
Und bitte keine falschen Tipps geben. Ich hab dein Posting korrigiert. Das verwirrt doch noch mehr, wenn du falsches Zeugs postest.
 
Dein Arrayindex war vorher eine undefinierte Konstante, jetzt ist es ein String und funktioniert auch.
 
Hat denn jemand eventuell eine Idee wie ich das lösen kann?, das die gallery & das forum nur per index2 aufgerufen werden können und Aufrufe von der index zur index2 weitergeleitet werden.

Also User a Ruft index2.php?file=forum auf kommt ins Forum soweit sogut
User b Ruft index.php?file=forum auf käme auch aufs Forum aber mit der Falschen index. Ich hätte gerne folgendes:


Über Hilfreiche Links, Tipps öÄ wäre ich euch Dankbar

XoT seinen Tipp habe ich bereits oben mit Integriert, lief aber nicht -.-

Gruß,
Fabian
 
Zuletzt bearbeitet:
Du musst irgentwo im Code von index.php folgendes einfügen, dann sollte es gehen...


PHP:
<? 
$site = $_GET['site'];
if ($site == "forum") {
header( "Location: https://www.waffenschmiede-bünde.de/index2.php?site=forum" );  
}
?>

So ich hoffe tH haut mich nich wieder :ugly:
 
Zuletzt bearbeitet:
EDIT, habs mal ganz an Anfang geklatscht ;), Funktioniert *gg*

Ty

Wenn ich jetzt zb /index.php?site=forum&board=17

auf /index2.php?site=forum&board=17

dann muss ich doch /index2.php?site=forum&board=% eingeben oder nicht? also als Platzhalter
 
Was für ein Platzhalter?! 8O

Wenn die URL komplizierter is, dann musst du das eben im Script abfangen. Hier würde sich wohl ein regulärer Ausdruck anbieten, oder, falls wirklich erbarmungslos alles von einem Script auf das andere umgeleitet werden soll, dann mit str_replace das Script ersetzen und die Querystring somit 1:1 gleichlassen.
 
Hmm, also wenn man es mit str_replace() machen würde, wie theHacker das sagte, dann würde es wohl so funktionieren:

PHP:
<? 
if (strpos($_SERVER['QUERY_STRING'],'forum')) {
	$index2 = 'https://'.$_SERVER['HTTP_HOST'].str_replace('index.php','index2.php',$_SERVER['SCRIPT_NAME']).(!empty($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : '');
	
	header("Location: ".$index2);  
}
?>

Statt mit strpos() könnte man das bestimmt auch eleganter mit Regulären Ausdrücken lösen, aber das ist nicht so mein Gebiet :ugly:
 
Ganz flott:

.htaccess
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^/index.php?site=forum(.*)$ /index2.php?site=forum$1 [NC]

Erfordert mod_rewrite aber is echt die schnellste variante weil das gleich in Apache ausgefuehrt wird und nicht mal die php engine starten muss, und es kopiert sogar eventuelle weitere parameter, somit koennen sogar alte Links migriert werden

HTH.