mod_rewrite problem
Andreas Korthaus
- webserver
Hallo!
ich wollte meine Seite mal offline testen, damit ich nicht andauernd hochladen muß. Online habe ich einen Apache 1.3 unter Linux, offline habe ich einen Apache 2 ebenfalls unter Linux.
Jetzt habe ich das Problem das die Verzeichnis-Struktur offline eine ganz andere ist als online, bzw. das ich offline keine extra Sub-Domain für das Projekt habe. Der "Document-Root" für die Seite online lautet:
sub.domain.de/
und offline:
localhost/projekt/http-root/
Und zwar habe ich im "document-root" eine .htaccess mit einer Rewrite-rule liegen:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/images/.*
RewriteCond %{REQUEST_URI} !^/js/.*
RewriteCond %{REQUEST_URI} !^/styles/.*
RewriteCond %{REQUEST_URI} !^/index.php.*
RewriteRule ^(.*)$ /index.php?url=$1 [L]
Das funktioniert online wunderbar, offline greift die Rule aber gar nicht. Es ist so als sei da keine .htaccess.
ich habe auch mal
RewriteBase /projekt/http-root
hinzugefügt, aber das brachte auch nichts. Hat jemand ne Idee woran das liegen könnte? Soweit ich das überblicke gab es dies bezügliche keine Änderungen des mod_rewrite von Apache 1.3 auf 2.0
Grüße
Andreas
Hallo Andreas,
Du schreibst nichts über die Einstellungen in der httpd.conf - ist dort auch das mod_Rewrite-Modul geladen und die Berechtigung gesetzt, daß die .htaccess die Servereinstellungen überschreiben darf (AllowOverride All)?
Gruß
Takahe
HallO!
Du schreibst nichts über die Einstellungen in der httpd.conf - ist dort auch das mod_Rewrite-Modul geladen und die Berechtigung gesetzt, daß die .htaccess die Servereinstellungen überschreiben darf (AllowOverride All)?
Man, das wars! Dankeschön! Bin ich ja so gar nicht drauf gekommen :-(
Aber mal eine andere Frage, bei vielen Webservern wird ein Request an "www.server.de/verzeichnis" auf die index.html in "verzeichnis" umgeleitet. Wie kann man das erreichen, bei mir funktioniert das nur mit "www.server.de/verzeichnis/"
Grüße
Andreas
Moin!
Jetzt habe ich das Problem das die Verzeichnis-Struktur offline eine ganz andere ist als online, bzw. das ich offline keine extra Sub-Domain für das Projekt habe. Der "Document-Root" für die Seite online lautet:
Das ist ja nun wirklich kein Problem, sich _offline_ einfach eine Subdomain (und auch eine Domain) zu erstellen und dafür einen virtuellen Host zu konfigurieren, oder?
Du öffnest die hosts-Datei (/etc/hosts) und legst dort einen neuen Eintrag an:
127.0.0.1 subdomain.domain.test
Die TLD ".test" ist offiziell belegt für Testdomains und wird im Internet deshalb nicht vergeben. Es kann also keine Konflikte geben.
Wahlweise konfigurierst du deinen lokalen Nameserver so, dass er entsprechende Informationen rausgibt.
Wie du deinen Apache dann dazu bewegen kannst, auf "http://subdomain.domain.test" als virtueller Host zu reagieren, solltest du wissen.
- Sven Rautenberg
Hi Sven!
Das ist ja nun wirklich kein Problem, sich _offline_ einfach eine Subdomain (und auch eine Domain) zu erstellen und dafür einen virtuellen Host zu konfigurieren, oder?
Hab sowas noch nie gemacht!
Du öffnest die hosts-Datei (/etc/hosts) und legst dort einen neuen Eintrag an:
127.0.0.1 subdomain.domain.test
Ein FRage dazu, wieso steht in dem 1. Eintrag dort:
127.0.0.1 localhost.localdomain localhost
^^^^^^^^^
Es funktioniert aber mit genau dem Eintrag den Du genannt hast.
Die TLD ".test" ist offiziell belegt für Testdomains und wird im Internet deshalb nicht vergeben. Es kann also keine Konflikte geben.
gut zu wissen!
Wie du deinen Apache dann dazu bewegen kannst, auf "http://subdomain.domain.test" als virtueller Host zu reagieren, solltest du wissen.
Habe ich noch nie gemacht, gab es aber genug zu lesen udn es funktioniert. Einziges "Problem", der Apache braucht jetzt sehr lange zum starten. Kann es was mit dem Namensserver zu tun haben?
Wahlweise konfigurierst du deinen lokalen Nameserver so, dass er entsprechende Informationen rausgibt.
Wo konfiguriere ich den Namensserver? In welcher Datei?
ich hatte da auch "HostNameLookups off" drin stehen, ändert aber nichts daran.
Nochwas zu den Virtuellen hosts, wie ich das überblicke gibt es 2 Möglickeiten:
NameVirtualHost 127.0.0.1
<VirtualHost localhost>
DocumentRoot /home/www/
ServerName localhost
DirectoryIndex index.php index.html index.htm index.shtml
HostNameLookups off
</VirtualHost>
<VirtualHost www.ep.test>
ServerAlias www.ep.test *.www.ep.test
DocumentRoot /home/www/eP/http-root
ServerName testname
DirectoryIndex index.php index.html index.htm index.shtml
HostNameLookups off
</VirtualHost>
oder wie in der Apache Doku:
<VirtualHost *>
DocumentRoot /home/www/
ServerName localhost
DirectoryIndex index.php index.html index.htm index.shtml
HostNameLookups off
</VirtualHost>
<VirtualHost *>
ServerAlias www.ep.test *.www.ep.test
DocumentRoot /home/www/eP/http-root
ServerName www.ep.test
DirectoryIndex index.php index.html index.htm index.shtml
HostNameLookups off
</VirtualHost>
Worin besteht der Unterschied? Jedenfalls vielen Dank für den Tip!
Grüße
Andreas
PS: hätte aber trotzdem nicht wie gewünscht funktioniert, von wegen allow... ;-)
Moin!
Das ist ja nun wirklich kein Problem, sich _offline_ einfach eine Subdomain (und auch eine Domain) zu erstellen und dafür einen virtuellen Host zu konfigurieren, oder?
Hab sowas noch nie gemacht!
Dann wurde es Zeit. :) Immerhin hast du bei privaten Netzen die einmalige Gelegenheit, dir alles (auch die Hostnamen) so zu definieren, wie du sie willst und brauchst - und nicht so, wie dein Hoster sie vorgibt oder im jeweiligen Paket nur erlaubt.
Du öffnest die hosts-Datei (/etc/hosts) und legst dort einen neuen Eintrag an:
127.0.0.1 subdomain.domain.test
Ein FRage dazu, wieso steht in dem 1. Eintrag dort:
127.0.0.1 localhost.localdomain localhost
^^^^^^^^^
Was hast du hier unterstrichen? In dieser Zeile werden zwei Namen als Alias für 127.0.0.1 definiert - mehr hat das nicht zu sagen.
Es funktioniert aber mit genau dem Eintrag den Du genannt hast.
Du hättest den Eintrag natürlich auch der schon bestehenden 127.0.0.1-Zeile hinzufügen können, aber ich finde es übersichtlicher, pro Zeile einen Host zu definieren.
Wie du deinen Apache dann dazu bewegen kannst, auf "http://subdomain.domain.test" als virtueller Host zu reagieren, solltest du wissen.
Habe ich noch nie gemacht, gab es aber genug zu lesen udn es funktioniert. Einziges "Problem", der Apache braucht jetzt sehr lange zum starten. Kann es was mit dem Namensserver zu tun haben?
Kann es. Ich bin aber kein Experte für nameserverlose Apaches, meine haben immer irgendeinen echten Nameserver (und keine Hosts-Datei) zur Verfügung.
Wahlweise konfigurierst du deinen lokalen Nameserver so, dass er entsprechende Informationen rausgibt.
Wo konfiguriere ich den Namensserver? In welcher Datei?
Dazu mußt du den Nameserver erstmal konfigurieren. Wenn du nicht weißt, wie das geht, dann hast du zwei Optionen: Es lassen (hosts-Datei funktioniert wie ein einfacher Nameserver), oder dich schlaumachen (dabei kannst du eigentlich nur gewinnen) und durch die Dokomentation eines Nameserver-Produktes und möglicher HOWTOs kämpfen.
Ich frage mich, ob es nur für localhost sinnvoll ist, einen Nameserver aufzusetzen - aber sobald du mehr als einen Rechner im Netzwerk zusammenschließt (also ab zwei Rechnern), macht sich ein Nameserver bezahlt. :)
Du hast im Prinzip die Auswahl zwischen BIND (gibts in Version 4 und 8 oder 9) - das ist der klassische Nameserver, der seit anno dazumal im Internet verwendet wird. Er funktioniert, ist eigentlich recht normal einfach zu konfigurieren und es gibt einige HOWTOs für seine Konfiguration - leider wird bei einigen nicht klar gesagt, ob sie nun für BIND 4 oder BIND 8 sind, und man sucht sich unter Umständen tot nach einer Datei, die für die andere Version gedacht ist.
Und es gibt Alternativen. "djbdns" (http://cr.yp.to/djbdns.html) soll gewisse Dinge ganz einfach erledigen, beispielsweise Zone-Transfers. Das sind aber meist Sachen, die mal lokal oder für ein kleines Netzwerk nicht braucht. Trotzdem würde ich, wenn ich mal wieder vor der Aufgabe stehen würde, einen DNS-Server neu aufzusetzen, diesen mal ausprobieren. Die Konfiguration ist jedenfalls nicht komplizierter - laut Doku sogar wesentlich einfacher. Schau selbst.
Nochwas zu den Virtuellen hosts, wie ich das überblicke gibt es 2 Möglickeiten:
Uff, ich bin bei diesen Direktiven eigentlich auch nur Zauberlehrling - es geht, und das reicht mir derzeit. :)
Worin besteht der Unterschied? Jedenfalls vielen Dank für den Tip!
Lies die Apache-Doku, da sollte es drinstehen. Und wenn du dazu keine Lust hast: Nimm das, was funktioniert. :)
PS: hätte aber trotzdem nicht wie gewünscht funktioniert, von wegen allow... ;-)
Ich weiß, aber allein die Domain war ein schöner Ansatzpunkt für eine Verbesserung. Wenn du den Domainnamen bis auf ".test" identisch wählst, kannst du durch Änderung dieser Angabe schnell zum Live-System wechseln und gucken, wie es dort geht. Ich find's jedenfalls praktisch so. :)
- Sven Rautenberg