Frage

Ok. So baue ich diese Seite, die durch zwei unterschiedliche Domänen zugänglich ist. So kann ich nicht RewriteBase in meinem .htaccess verwenden. Die Regeln (siehe unten) Ich verwende, um dieses Problem zu funktionieren scheinen gut zu funktionieren. Allerdings, wenn ich die folgenden .htaccess-Einstellungen auf meiner lokalen Box mit sauberem URLS (WAMP) verwende es funktioniert gut, aber der Moment, ich benutze diese auf dem Live-Server (Shared-Hosting-LAMP) jede Seite, die ich auf Anzeigen die Homepage navigieren (die ein unter dem Index, obwohl ich denke), auch die URL im Browser eindeutig aktualisiert wird.

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain1.com/(.*)$
  RewriteRule ^(.*)$ /domain1.com/index.php?q=$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain2.com/(.*)$
  RewriteRule ^(.*)$ /domain2.com/index.php?q=$1 [L,QSA]
</IfModule>

Jede Hilfe oder Ideen werden sehr geschätzt.

  • Luke
War es hilfreich?

Lösung

Wahrscheinlich das Beste, was zu tun ist, das Problem auf Ihrem lokalen Rechner zu reproduzieren und wieder auftauchen RewriteLogLevel so können Sie sehen, was los ist. (Da Sie in der Regel nicht die Protokollebene auf Shared-Hosting ändern)

Unter Umständen können Sie das Problem zu „simulieren“, indem ein Verzeichnis Rewrite in Apache Hauptkonfiguration zu tun. (Das Shared-Hosting offensichtlich hat sein eigenes Umschreiben, bevor es die .htaccess bekommt!) Wenn Sie das Problem nicht reproduzieren können, können Sie Trial-and-Error-Debugging auf dem Remote-Server starten müssen. Das ist hässlich, aber wenn es Ihre einzige Option:

Mit der R (Redirect) Flag in Ersetzungen an Ihren Browser jede neu geschrieben URL zurück zu senden. Verwenden Sie TELNET (oder ein entsprechender Browser-Add-on), um die HTTP-Antworten zu überprüfen.

Vergessen Sie nicht, Punkte in regulären Ausdrücke zu entkommen!

Als Randnotiz werden die RewriteRule Muster vor dem RewriteConds darüber abgestimmt. Diese Art von Einrichtung ist wahrscheinlich besser für die Leistung:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/domain1\.com/(.*)$ /domain1.com/index.php?q=$1 [L,QSA]
#                     ^ should be escaped

Beachten Sie, dass ich nicht getestet haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top