Sinnvoll wäre daher natürlich wenn in seiner Adressleiste dann auch das nun richtige "www.meinedomain.com/index.php" erscheinen würde.
ok... Ich habe das jetzt NATÜRLICH NICHT durchgetestet. Die folgenden Beispiele können also kleine Fehler enthalten.
=====================================================
Variante 1 mit unsichtbarer, falscher URL und SESSION:
Schritt 1 (.htaccess, Anweisung, den Request mit /ERR404.php abarbeiten):
RewriteEngine on
#####################################
## Nach allen anderen Umleitungen! ##
#####################################
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /ERR404.php [L]
Schritt 2: (ERR404.php) Variante 1:
----------------------------------
<?php
session_start();
$_SESSION['REDIRECT_URL']=$_SERVER['REDIRECT_URL'];
header('Location: http://' . $_SERVER['SERVER_NAME'] . '/index.php');
----------------------------------
Schritt 3: (index.php): Variante 1:
<?php
session_start();
if ( isset($_SESSION['REDIRECT_URL']) ) {
unset($_SESSION['REDIRECT_URL']);
}
=====================================================
Variante 2 mit unsichtbarer, falscher URL und Cookie:
Schritt 1 (.htaccess, Anweisung, den Request mit /ERR404.php abarbeiten):
RewriteEngine on
#####################################
## Nach allen anderen Umleitungen! ##
#####################################
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /ERR404.php [L]
Schritt 2: (ERR404.php) Variante 1:
----------------------------------
<?php
$_COOKIE['REDIRECT_URL']=$_SERVER['REDIRECT_URL'];
header('Location: http://' . $_SERVER['SERVER_NAME'] . '/index.php');
----------------------------------
Schritt 3: (index.php): Variante 1:
<?php
if ( isset($_COOKIE['REDIRECT_URL']) ) {
setcookie ('REDIRECT_URL', '', time() - 3600);
}
=====================================================
Variante 3 mit sichtbarer falscher URL
Schritt 1 (.htaccess, Anweisung, den Request mit /index.php abarbeiten):
RewriteEngine on
#####################################
## Nach allen anderen Umleitungen! ##
#####################################
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?Err=$1 [L,R=301] # wenn permanent - sonst 302!
Schritt 2: (index.php)
----------------------------------
<?php
if ( isset($_GET['Err']) ) {
}?>
Jede dieser Varianten hat Vor- und Nachteile. 1 und 2 bedingen Cookies und eine etwas höhere Serverlast (auch das Session-Cookie ist eines) bei Variante 3 bleibt der vorherige Request dennoch als Teil der URL sichtbar. Wenn Du nichts davon willst verzichte auf die Forderung.
Jörg Reinholz