PHP htaccess RewriteEngine gibt Fehler 500

Rockhound

Lt. Commander
Registriert
Jan. 2003
Beiträge
1.540
Hi Leute,
habe nach dieser Anleitung meine .htaccess erstellt.
Rufe ich nun aber meine Domain auf mit z.b. www.pauernet.de/news kommt eine Fehler 500 Ausgabe.

.htaccess Inhalt
PHP:
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [L]
</IfModule>

index.php Inhalt
PHP:
<!doctype html>
<html>
<head>
<title>HTACCESS TEST</title>
<meta name="robots" content="noindex,nofollow" />
</head>
<body>
<?php
function parse_path() {
  $path = array();
  if (isset($_SERVER['REQUEST_URI'])) {
    $request_path = explode('?', $_SERVER['REQUEST_URI']);

    $path['base'] = rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/');
    $path['call_utf8'] = substr(urldecode($request_path[0]), strlen($path['base']) + 1);
    $path['call'] = utf8_decode($path['call_utf8']);
    if ($path['call'] == basename($_SERVER['PHP_SELF'])) {
      $path['call'] = '';
    }
    $path['call_parts'] = explode('/', $path['call']);

    $path['query_utf8'] = urldecode($request_path[1]);
    $path['query'] = utf8_decode(urldecode($request_path[1]));
    $vars = explode('&', $path['query']);
    foreach ($vars as $var) {
      $t = explode('=', $var);
      $path['query_vars'][$t[0]] = $t[1];
    }
  }
return $path;
}

$path_info = parse_path();
echo '<pre>'.print_r($path_info, true).'</pre>';


switch($path_info['call_parts'][0]) {
  case 'about-us': include 'about.php';
    break;
  case 'users': include 'users.php';
    break;
  case 'news': include 'news.php';
    break;
  case 'products': include 'products.php';
    break;
  default:
    include 'front.php';
}
?>

</body>
</html>

Irgendwas muss ich vergessen oder falsch machen, aber ich kommt nicht drauf.

Jede Hilfe wäre super :)

Danke & Gruß
Daniel
 
Irgendwie nicht möglich bei meinem Hosting-Paket :(
Alles ausgegraut.
logs.png
 
Man entwickelt ja auch nicht online, sondern immer lokal. Gibt sogar nen einfachen Installer, der relevante Tools sofort mitbringt: https://www.apachefriends.org/de/index.html. HTTP-Server und PHP-Installation sind dabei, den Rest wie FTP-, Mail-, oder Tomcat-Server u.ä. kannst du vorerst ignorieren.

Installier dir das, bau deine Seite oder mach deine Experimente lokal (da hast du auch volle Kontrolle über das System) und guckst bei solch einem Fehler einfach ins error.log. Standardmäßig liegt das bei XAMPP unter C:\Program Files (x86)\xampp\apache\logs\error.log.
 
Wüsste nicht was dagegen spricht direkt auf den webspace zu arbeiten. Dann ist die spätere live Stellung auch einfacher und man stößt nicht plötzlich auf Probleme wegen anderer Server Konfiguration.

Lokal entwickeln würde bei diesem Problem auch nicht helfen. Schätze der Server verbietet es Modrewrite zu aktivieren.

Scheint sowieso ein komischer hoster zu sein. Ist der erste von dem ich höre das man das loggen abschalten kann.

Ich würde den Support anschreiben und ggf den hoster wechseln.
 
Gibt es denn eine Möglichkeit herauszufinden ob auf meinem Webspace modrewrite aktiviert ist oder es unterstützt wird. Irgendeine Abfrage die ich mittels PHP oder JAVAScript machen kann?
 
Eher nicht. Im Endeffekt kannst du einen ultimativ einfachen Rewrite auslösen, also nur
<IfModule mod_rewrite.c>
RewriteEngine on
</IfModule>
Ohne zusätzliche Regeln. Wenn das bereits n 500 auslöst, dann weißt du's ziemlich sicher.
Ansonsten: Telefon in die Hand nehmen, Support nerven.

Ich hab über n paar Jahre auch so n Projekt betreut, dass auf so nem obskuren Hoster lag, bei dem Rewrite direkt n 500er ausgelöst hat.
 
hmm, bin gerade dran die LogFiles freigeschaltet zu bekommen.

Habe jetzt mal dein Code eingefügt in die .htaccess Datei. Und wenn ich die pauernet.de aufrufe kommt erst mal kein Fehler :)
 
Bist du dir bei dem "^" in deiner RewriteRule eigentlich sicher? Ich kenn die Zeile eher so:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]

Das ist ein Teil der Regeln, wie sie bei Magento verwendet wird. Auch bei Contao finden sich solche Regeln, wenn man den üblichen URL-Suffix (.html) deaktivieren will. So gesehen... evtl. ist dein ^ schuld.
 
Wie oben erwähnt hab ich das von einer Internetseite raus.
Füge ich deinen Code an kommt ein 404 Error :)
Ich geb auch gern mal FTP Zugriff damit Du dir das ansehen kannst?!?

[edit]
Ich hab es hinbekommen

.htaccess
PHP:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /index.php

index.php
PHP:
<!doctype html>
<html>
<head>
<title>HTACCESS TEST</title>
<meta name="robots" content="noindex,nofollow" />
</head>
<body>
<?php
$url = $_SERVER["REQUEST_URI"];
$url = explode("/", $url);
$a = $url[1];
$b = $url[2];

if(!empty($a)) {  
if (!file_exists($a.".php") ) {  
include("front.php");}  
else {  
include($a.".php");}  
} else {  
include("front.php");}  
?>
</body>
</html>

Danke Euch allen für die Hilfe.

Gruß
Daniel
 
Zuletzt bearbeitet:
Zurück
Oben