Apache schreibt Regeln für Entwicklungsarbeitsstation und Server neu


7

Ich habe Entwickler, die Seiten für mehrere Sites auf einem WAMP-Stack bearbeiten und dann auf die öffentlichen Server hochladen, auf denen LAMP-Stacks ausgeführt werden. Wir sind ziemlich zufrieden damit, aber wir haben diesen kleinen Ärger: Wir können nicht ganz dieselben .htaccess-Dateien in den Entwicklungs- und Produktionsumgebungen verwenden. Auf den öffentlichen Plätzen, ordnet der Quellordner http://foo.com, http://bar.comund so weiter. Auf der Entwickler - Workstation, Karte die Quellordner http://localhost/foo, http://localhost/barund so weiter. Das bedeutet , dass ich brauche RewriteBase /für die öffentlichen Servern, während jeder Standort auf der Entwickler - Workstation Anwendungen RewriteBase /foo/, RewriteBase /bar/oder was auch immer.

Gibt es eine Möglichkeit, die RewriteBase relativ zur .htaccessDatei anzugeben ? Irgendwelche anderen Ideen, wie ich meine Umschreiberegeln portabler machen kann?

Wenn Sie neugierig sind, verwende ich Umschreiberegeln, um zum CakePHP-Routingcode umzuleiten. Die Regel sieht also folgendermaßen aus:

RewriteRule ^(.*)$ cake_main.php?url=$1 [QSA,L]

Wenn ich /foo/auf der Entwickler-Workstation keine RewriteBase von verwende , wird diese /cake_main.phpanstelle von neu geschrieben /foo/cake_main.php.

Antworten:


4

Meine Lösung bestand darin, nicht mit den Umschreiberegeln herumzuspielen, sondern meinem PC separate lokale Domänen / Hosts mit gefälschten TLDs hinzuzufügen.

Sie können dies tun, indem Sie die Datei bearbeiten C:\Windows\System32\drivers\etc\hosts

Beachten Sie, dass Sie unter Windows 7 (und möglicherweise Vista) Ihren Texteditor als Administrator ausführen müssen, um diese Datei erfolgreich zu bearbeiten.

Sie können Hosts mithilfe von Zeilen hinzufügen, die wie folgt aussehen:

127.0.0.2       www.mysite.local
127.0.0.3       www.myothersite.local

Sobald diese vorhanden sind, können Sie Apache für diese Domain-Namen konfigurieren und loslegen.

Dies funktioniert natürlich nicht, um von anderen Computern im lokalen Netzwerk aus gut zu testen. In dieser Situation ist es jedoch möglicherweise besser, einen lokalen DNS-Server zu verwenden oder die Hosts lokalen nicht portablen IP-Adressen und zuzuweisen Synchronisieren Sie die Dateien auf allen PCs.


Das ist das gleiche, was ich auf meinem Linux-Desktop mache. Es ist viel einfacher, nur eine Reihe virtueller Hosts einzurichten, als Dateien bearbeiten / pushen / dann lokal zurücksetzen zu müssen.
Tim Post

Hört sich gut an, das probiere ich aus.
Don Kirkby

"Dies funktioniert nicht, um von anderen Maschinen aus gut zu testen" - Wenn Sie eine Subdomain anstelle einer TLD verwenden, z. local.example.comkönnen Sie dies als AEintrag im DNS festlegen , ohne die HOSTS-Datei bearbeiten zu müssen (wenn Sie mit dem Internet verbunden sind), und dies funktioniert für alle Computer (einschließlich mobiler Geräte) im lokalen Netzwerk. Auf diese Weise können Sie auch Entwicklungs- / Live-Cookies getrennt halten, wenn Sie dies wünschen.
MrWhite
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.