2016-05-31 21 views
1

gesetzt, wenn die folgenden Einträge in meinem .htaccess Datei mitUmgebungsvariable in .htaccess Rewrite-Regel ist nicht

RewriteEngine On 
SetEnv rewritten 0 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)(/|$) /#$1 [L,NE,R=302,E=rewritten:1] 

Welche <url>/test/-<url>/#test umschreibt.

Das Ziel ist es, den "Test" -Teil in einer Umgebungsvariable zu belassen, also kann ich php verwenden, um die Facebook-Metatags zu ändern und den Anker zu einem Abschnitt auf meiner Ein-Seite-Seite zu scrollen. Für das obige Beispiel ist die rewritten Variable immer 0 und wenn ich die SetEnv Zeile entferne, wird die Variable überhaupt nicht gesetzt.

Ich habe gelesen, dass die Variable möglicherweise nicht nach einer Umleitung, die die 302 tun wird beibehalten wird. Gibt es einen anderen Weg, dies zu tun? Andere Lösungen sind willkommen - mein übergeordnetes Ziel ist es, einen Link zu einem bestimmten Teil meiner Anwendung zu setzen und die Metatags entsprechend diesem Abschnitt zu setzen.

Es gibt mehrere Fragen hier auf SO, wo Leute versuchen, eine URL mit dem Ankerteil, zu einer URL ohne es neu zu schreiben - das ist nicht meine Frage, da es nicht getan werden kann.

Danke.

Bearbeiten Das obige ist nicht möglich. Folgendes wurde zu .htaccess hinzugefügt, die <url>/test zu <url>/?test#test umleiten. PHP kann dann prüfen, ob der Parameter test gesetzt ist und Meta-Tags entsprechend ändern.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)(/|$) /?$1#$1 [L,NE,R=302] 
+0

Die Env-Variable kann nicht über eine externe Umleitung eingestellt werden, da die Env-Variable bei Änderung des Pfads ebenfalls verloren geht. Ich denke nicht, was Sie erreichen wollen, ist so möglich. – starkeen

+0

@starkeen Sie haben Recht. Ich löste es, indem ich nach der Umleitung auch einen Parameter zur URL hinzufügte. '/test /' zeigt jetzt auf ' /? Test # test' – Feller

Antwort

0

Das obige ist nicht möglich. Folgendes wurde zu .htaccess hinzugefügt, die <url>/test zu <url>/?test#test umleiten. PHP kann dann prüfen, ob der Parameter test gesetzt ist und Meta-Tags entsprechend ändern.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)(/|$) /?$1#$1 [L,NE,R=302] 
Verwandte Themen