[mod_rewrite] Lokale interne Weiterleitung

Crys

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.653
Ich möchte auf meinem PC ein paar Weiterleitungen für den Apache einführen.

Wenn "http://lokal/" aufgerufen wird, dann soll immer der Pfad von "127.0.0.1" aufgerufen werden.
Das selbe für alle Subdomains von "lokal" ("m.lokal", "mail.lokal", ...)

Das selbe so ähnlich für andere Domains gemacht werden, wenn "http://beta/" aufgerufen wird, dann soll immer der Pfad von "127.0.0.1" mit dem Unterordner "beta" aufgerufen werden.
Das selbe für alle Subdomains.

In der "hosts"-Datei von Windows sind die Domains eingetragen ("127.0.0.1 lokal" usw.) und in der .htaccess steht "RewriteRule http://beta\.(.*)$ /beta/index.php [L]".

Aber funktionieren tut das nicht so wie es soll. Ich möchte eine interne Weiterleitung, der Pfad in der Adresszeile soll nicht geändert werden.
Ich probiere gerade rum, aber meist muss ich nach einen versuch den PC neu starten, weil obwohl die alten Einstellungen aus .htaccess gelöscht sind und der Apache neu gestartet ist, gehen noch alte Weiterleitungen.

Wie leite ich richtig lokal intern weiter?
 
Du kannst das mit virtuellen Hosts erreichen. Einfach in deiner httpd-vhosts einen virtual host mit dem anlegen und als document root deinen ordner eintragen ;)
 
Danke, das ist ein neuer Ansatz, aber ich komme nicht weiter.

Code:
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "F:/Homepage/beta"
    ServerName beta
</VirtualHost>
Sonst ist kein vHost eingetragen. Die normale Seite ist immer noch ganz normal erreichbar. Die beta-Seite gibt jetzt immer einen 500-Fehler aus.
 
Hast du den apache server neu gestartet danach?

Die Anführungszeichen beim document root mal weggegeben ?

Im apache log sollt noch eine detailiertere fehlermeldung zum 500 error zu sehen sein.
 
Zuletzt bearbeitet:
DaVian schrieb:
Hast du den apache server neu gestartet danach?
Klar, nach jedem ändern im XAMPP COntol Panel den Apache neu gestartet.

DaVian schrieb:
Die Anführungszeichen beim document root mal weggegeben ?
Ändert sich nichts.

DaVian schrieb:
Im apache log sollt noch eine detailiertere fehlermeldung zum 500 error zu sehen sein.
Code:
[error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
 
Die Weiterleitung scheint zu funktionieren.

Hast du im Root Verzeichnis des Beta zufälig ein .htaccess File, welches eine erneute Weiterleitung macht?

Editier mal deinen vhosts Eintrag zu

Code:
<VirtualHost *:80>
    DocumentRoot "F:/Homepage/beta"
    ServerName beta

    LogLevel debug
</VirtualHost>

Und eventuell mal nach dieser Anleitung machen: leider kann ich dir url nicht hinzufügen :/ aber einfach mal bei google nach php.de virtual-hosts-vhosts-einrichten-unter-windows suchen
 
Zuletzt bearbeitet: (Code hinzugefügt)
Du hast mich auf dem Fehler gebracht!
Im "beta"-Ordner ist keine .htaccess, aber die .htaccess im Hauptorder (von "lokal") beeinflusst auch die beta-Domain.
Wenn ich die .htaccess im Hauptordner lösche, dann geht alles mit den anderen Domains.

Dort habe ich Code-Zeilen, wie:
Code:
RewriteCond %{REQUEST_URI} !.*\.(js|css|jpe?g|png|txt|gif)$
# ...
RewriteRule .* index.php [L]
... damit alle Dateien auf die index.php weitergeleitet werden.
Wieso wird sich das auch auf andere VirtualHost aus?
 
Kann es sein das dein DocumentRoot vom beta vhost ein Unterordner des localhost ist?

Du könntest noch probieren in den beta Ordner eine weitere htaccess Datei zu geben mit
Code:
RewriteEngine Off
 
Zuletzt bearbeitet:
Hi, danke DaVian!

Ja, im ersten Post steht das es ein Unterordner ist ;)
Wenn ich dort ne htaccess-Datei mit
Code:
RewriteEngine Off

## oder die selbe Regel wie im root:
RewriteEngine on

RewriteCond %{REQUEST_URI} !.*\.(js|css|jpe?g|png|txt|gif)$
# ...
RewriteRule .* index.php [L]
erstelle klappt alles!

Noch mal vielen Dank für deine Hilfe!
 
Zurück
Oben