Trailing-Slash-Problematik nach Domain-Umzug

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Trailing-Slash-Problematik nach Domain-Umzug

Beitragvon Newbie » 04.07.2006 09:39

Hallo, Comm!

Nachdem ich nun hier fleissig mitgelesen habe und einiges umsetzen konnte, stehe ich nun vor einem mir unlösbaren Problem, welches hier zwar schon häufig diskutiert wurde, aber jetzt irgendwie nicht mehr funktionieren will.

Ich bin 1&1-Kunde, war vorher bei einem anderen Provider (falls dies wichtig ist).

Meine .htaccess sieht so aus (ein Auszug):
Code: Alles auswählen
<IfModule mod_php4.c>
php_flag register_globals off
</IfModule>

ErrorDocument 401 http://www.meinedomain.com/Fehler/401/
ErrorDocument 402 http://www.meinedomain.com/Fehler/402/
ErrorDocument 403 http://www.meinedomain.com/Fehler/403/
ErrorDocument 404 http://www.meinedomain.com/Fehler/404/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /testordner/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=35]

RewriteRule ^Startseite/?$ index.php?a=Div&b=startseite [QSA,L]
RewriteRule ^Fehler/([0-9]+)/?$ index.php?a=Div&b=fehler&id=$1 [QSA,L]
RewriteRule ^Login/?$ index.php?a=Security&b=log&do=login [QSA,L]
RewriteRule ^Logout/?$ index.php?a=Security&b=log&do=logout [QSA,L]
</IfModule>

An der Ordner-Hierarchie wurde nichts geändert. Vorher befanden sich auch alle Dateien inklusive der .htaccess in einem Unterverzeichnis (jetzt "testordner").

Das funktionierte blendend, nur jetzt nicht mehr. Rufe ich beispielsweise www.meinedomain.de/Startseite wird korrekt umgeleitet (auch mit R-Flag geprüft). Hänge ich allerdings ein Slash an, wird auf meine Fehlerseite umgeleitet. Warum ist das so? Ich werde noch wahnsinnig, weil ich den Fehler nicht finde.

Es wird PHP 4.4.2 unter Linux auf einem Apache 1.3.33 eingesetzt.

Könnt ihr mir unter die Arme greifen und mich davor bewahren, meinem Laptop Gratis-Flugstunden zu verpassen?

Gruß,
der Vollnoob ;-)

P.S.: Anzumerken wäre noch, dass es auch nicht funktioniert, wenn die .htaccess im Root-Verzeichnis abgelegt wird.
Newbie
.
.
 
Beiträge: 2
Registriert: 04.07.2006 09:24

Von selbst gelöst

Beitragvon Newbie » 04.07.2006 11:24

Hat sich erledigt.

Es lag an einem PHP-Schnipsel:
Code: Alles auswählen
// Installationsverzeichnis herausfinden und URL "zusammenbauen"
list ($web_url, $query_string) = explode("?", $_SERVER["REQUEST_URI"], 2);
$install_dir = dirname($web_url."xyz")."/";
$web_dir = ((empty($_SERVER["HTTPS"])) ? "http://" : "https://").$_SERVER["HTTP_HOST"].$install_dir;

Der Fehler liegt an der Variable $install_dir. Funktioniert einwandfrei, wenn man die URLs ohne mod_rewrite nutzt (der Unterordner "testordner" wird gefunden) und setzt alles korrekt um.

Nur wenn mod_rewrite genutzt wird, ballert er mir die virtuellen Verzeichnisse in die Variable.

Also wird diese Variable fortan nicht mehr automatisch vom Skript ermittelt, sondern einmalig angelegt mit...
Code: Alles auswählen
$install_dir = "/testordner/";

...und alles läuft wie am Schnürchen. :lol:
Newbie
.
.
 
Beiträge: 2
Registriert: 04.07.2006 09:24


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron