PHP [htaccess] Umleitungsfehler nur bei php file

safeload

Ensign
Registriert
Juni 2010
Beiträge
244
Hallo, ich hab einen 301 redirect per htaccess angelegt bei dem alle Domains, die nicht "https://www.meinedomain.de" lauten, auf eben diese umgeleitet werden sollen.

htacess
Code:
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=On [NC,OR]
RewriteCond %{HTTP_HOST} !=www.meinedomain.de [NC]
RewriteRule ^(.*)$ https://www.meinedomain.de/$1 [R=301,L]

Dies funktioniert bei html-files problemlos, jedoch bei meinem php-file (kontaktform) erhalte ich diese Fehlermeldung

"Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt werden.
"
(Cookies sind aktiviert)

PHP
Code:
<?php

if (array_key_exists('email', $_POST)) {
    date_default_timezone_set('Etc/UTC');
	
    require 'PHPMailer/PHPMailerAutoload.php';

    // neue PHPMailer Instanz
    $mail = new PHPMailer;
	$mail->CharSet = 'UTF-8';

    // SMTP aktivieren
    $mail->isSMTP();
	$mail->Host = 'smtp.strato.de';
	$mail->SMTPAuth = true;
	$mail->Username = 'info@domain.de';
	$mail->Password = 'xxxxxxxx';
	$mail->SMTPSecure = 'tls';
	$mail->Port = 587; 

    // Absender Adresse und Alias hinzufügen
    $mail->setFrom('info@domain', 'name');
	
    // Empfänger Adresse und Alias hinzufügen
    $mail->addAddress('info@domain', 'name');
	
    // Put the submitter's address in a reply-to header
    // This will fail if the address provided is invalid,
    // in which case we should ignore the whole request
    if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
        $mail->Subject = 'Ihr Kontaktformular wurde genutzt';
		
        // HTML Nachricht aktivieren
        $mail->isHTML(false);
		
        // Non-HTML Nachricht generieren
        $mail->Body = <<<EOT
Name: {$_POST['name']}

Adresse: {$_POST['adresse']}

Telefon: {$_POST['vortel']} {$_POST['telefon']}

Email: {$_POST['email']}

Nachricht:
{$_POST['message']}

EOT;

for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
        $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
        $filename = $_FILES['userfile']['name'][$ct];
        if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
            $mail->addAttachment($uploadfile, $filename);

        }
    }
        // Send the message, check for errors
        if (!$mail->send()) {
            // The reason for failing to send will be in $mail->ErrorInfo
            // but you shouldn't display errors to users - process the error, log it on your server.
            header('Location: error.html');
        } else {
            header('Location: confirm.php');
        }
    } else {
            header('Location: error.html');
    }
}
?>

Jemand eine Idee, woran dies im Detail liegen könnte?
 
Zuletzt bearbeitet:
Hi,

probier doch einfach mal ein PHP File mit einem "Hello World" aus um auszuschließen, dass der Inhalt deines Files dafür verantwortlich ist...

VG,
Mad
 
Gute Idee! Hello World wird mit dem redirect auch nicht angezeigt...
Aber warum nur funktionierts mit html und mit php nicht?
 
Hi,

wie sah der Code mit "Hello World" denn aus? Sonst nix in der Datei außer das echo?

VG,
Mad
 
Hi,

hast du mal getestet, welche RewriteRule dafür verantwortlich ist? Schau dir mal an, was in der htaccess steht und kommentiere das Stück für Stück ein oder aus und teste, mit welchen Rules es geht und mit welchen nicht.

VG,
Mad
 
Da ist ja nur eine Regel und mit der geht´s nicht und viele andere die ich ausprobiert habe gingen auch nicht.
Aber jetzt hab ich diese Syntax hier gefunden.

Code:
Options +FollowSymLinks -MultiViews
RewriteEngine on

# if requested hostname is non-blank
RewriteCond %{HTTP_HOST} .

# and if requested hostname is NOT "www.example.de"
RewriteCond %{HTTP_HOST} !^www\.meinedomain\.de

# redirect to same object in correct domain
RewriteRule (.*) https://www.domain.de/$1 [R=301,L]

Die funktioniert soweit ohne infinite loop bei php files.
Ich weiß nur nicht wie ich die Bedingung RewriteCond %{HTTP_HOST} !^www\.domain\.de so umstellen kann, daß sie nicht bei http://www.meinedomain.de greift sonder bei https://www.meinedomain.de ...

Hast Du da eine Idee?

edit: wenn ich RewriteCond %{HTTPS} off [NC,OR] einfüge wird auch die https://www.meinedomain.de weitergeleitet, nur dann hab ich wieder den php loop :-/

edit2: Mit RewriteCond %{SERVER_PORT} !=443 [NC,OR] statt RewriteCond %{HTTPS} !=On [NC,OR] ist der "php-loop" weg. @Madman: Danke für dein Interesse
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Pfandfinder
Zurück
Oben