2009-04-01 4 views
1

Hier ist der Anfang meiner .htaccessWarum würde diese .htaccess meine RewriteBase überspringen?

# invoke rewrite engine 
     RewriteEngine On 
     RewriteBase /~new 


    # force non domain.com to www.domain.com 

    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L,NC] 

jedes Mal wenn ich http://www.example.com/~new/whatever fordere ich zu http://www.example.com/whatever gesendet werde. Ich habe Klammern um die $ 1 gesetzt und ich bekomme http://www.example.com/[whatever].

Warum strippt es meine RewriteBase var?

Oder gibt es eine Möglichkeit, eine Umgebungsvariable in .htaccess zu setzen, die ich auf RewriteBase setzen und auch vor $ 1 setzen kann, damit die Umleitung funktioniert?

Antwort

3

Nun gesetzt, das ist eine Art, wie RewriteBase funktioniert: es weht alle führenden Pfadinformationen aus Ihrer Anfrage entfernt und wieder eingefügt dann die RewriteBase danach. In Ihrem Beispiel kann die Neuinsertion jedoch nicht durchgeführt werden, da Sie sie an eine vollständig qualifizierte URL weiterleiten.

Ich denke, Sie sollten sichern und genau definieren, was Sie zu tun versuchen, und möglicherweise eine neue Frage dazu stellen, anstatt davon auszugehen, dass RewriteBase ist, was Sie verwenden müssen und konzentrieren sich auf "warum nicht RewriteBase macht was ich will ". RewriteBase kann damit nichts zu tun haben.

+0

Meine Seite befindet sich derzeit in einer/~ neuen/außerhalb der Top-Level-Domain, aber wenn es zur Produktion geht wird es einfach die TLD. Ich möchte eine Möglichkeit, meine .htaccess zu informieren Sobald sich die Site in einem Unterverzeichnis befindet und sich später zu RewriteBase ändert/wenn ich zur TLD wechsele – alex

+0

... und alles sofort funktioniert, indem ich 'RewriteBase/~ new' in' RewriteBase/' – alex

+0

All umwandle Hier ist meine Frage, nehme ich an: Wenn Sie nur die RewriteBase herausnehmen, welches Verhalten erhalten Sie, dass ein Problem darstellt? – chaos

0

tun Sie einfach etw. wie dies am Anfang der Datei, die später die Rewrite Basis

RewriteCond %{HTTP_HOST} ^webmaster-eye\.de$ 
RewriteRule ^(.*)$ http://www.webmaster-eye.de/$1 [L,R=301] 
+0

Das hat nicht funktioniert Entschuldigung :( – alex