2017-02-05 4 views
2

Ich habe dieses Beispiel und es funktioniert in diesem Fall gut, aber ich möchte dynamisch auf einen Unterordner basierend auf dem Domänennamen umleiten. Wie kann ich example.com durch die aktuelle Domain ersetzen?Wie kann ich dynamische Variablen in htaccess verwenden?

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule !^example.com/ /example.com%{REQUEST_URI} [L,NC] 
</IfModule> 

Ich habe so etwas wie dies versucht: (aber immer interner Fehler)

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule !^$1/ /$1%{REQUEST_URI} [L,NC] 
</IfModule> 

Danke

Antwort

0

Der Rückverweis %1 wäre, weil es von der letzten RewriteCond ist. Aber man kann es nicht verwendet werden, da diese Rückverweise werden nur in der Substitution erkannt werden, siehe RewriteRule

Neben Klartext, die Auswechslung String kann

  1. zurück Verweise enthalten ($ N) ​​an die RewriteRule Muster
  2. Rückverweise (% N) bis zum letzten abgestimmten RewriteCond Muster

oder in einem RewriteCond Prüfstrang

Teststring ist eine Zeichenfolge, die die folgenden erweiterten Konstrukte zusätzlich zu Klartext enthalten:

  • RewriteCond Rückreferenzierungen: Dies sind Rückreferenzierungen der Form % N (0 < = N < = 9). % 1 bis% 9 ermöglichen den Zugriff auf die gruppierten Teile (wiederum in Klammern) des Musters von dem letzten übereinstimmenden RewriteCond im aktuellen Satz von Bedingungen. % 0 bietet Zugriff auf die gesamte Zeichenfolge, die mit diesem Muster übereinstimmt.

So als Abschluss, gibt es keine Möglichkeit, sie entweder in der Regel Muster verwenden können, beispielsweise

RewriteRule pattern substitution 

oder Bedingungsmuster

RewriteCond teststring condpattern 
1

können Sie Folgendes verwenden:

RewriteEngine on 

RewriteCond %{ENV_REDIRECT_STATUS} 200 
RewriteRule^- [L] 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteRule^/%1%{REQUEST_URI} [L] 

Die erste Regel ist wichtig, da es Verarbeitungen umschreiben auf zweite Iteration beendet und verhindert, dass der Schleifenfehler.

Verwandte Themen