2017-07-19 1 views
1

Okay, also muss ich die richtige Syntax für das, was ich tun möchte, finden.Schreibe Regel 301 mit anderer Formatierung

Diese Links:

RewriteEngine On 
RewriteRule ^/sub1/(.*)/(.*)$ http://www.example.com/subdir/$1-newsite/ [R=301,L] 

Für alle 700 Produkte:

http://www.example.com/sub1/sub2/product1/ 
(...) 
http://www.example.com/sub1/sub2/product700/ 

Notwendigkeit

http://www.example.com/sub3/product1-newsite/ 
(...) 
http://www.example.com/sub3/product700-newsite/ 

Was ich habe versucht, zu umleiten. Auch ich muss Ausnahmen für bestimmte Produkte machen.

Kann jemand sehen, was ich falsch mache?

+0

An welchen Ort werden Sie weitergeleitet für (sagen wir) http://www.example.com/sub1/sub2/product1/? –

+0

Ich habe jetzt 700 Regeln: Redirect 301/sub1/sub2/product1 http://www.example.com/sub3/product1-newsite Mein .htaccess ist jetzt fast 80 kbytes und auf der Suche nach einer Möglichkeit, die Dateigröße zu verringern . –

Antwort

0

Ich denke, es ist nur die Nummerierung auf dem regulären Ausdruck, die ein Problem ist.

$ 1 ist die erste übereinstimmende Gruppe, $ 2 ist die zweite usw. $ 0 ist für die gesamte Zeichenfolge, die übereinstimmte (dh der gesamte Pfad).

Versuchen:

RewriteEngine On 
RewriteRule ^/sub1/sub2/(.*)$ http://www.example.com/subdir/$1-newsite/ [R=301,L] 

oder

RewriteEngine On 
RewriteRule ^/sub1/(.*)/(.*)$ http://www.example.com/subdir/$2-newsite/ [R=301,L] 

bearbeiten

Ah ... einen Gedanken hatte ... die erste Regex in der Einnahme kann ein wenig zu sein gierig ... da es passen kann:

^/sub1/[sub2/product1-newsite]/[] s o $ 1 wird sub2/product1-newsite und $ 2 wird leer sein (. * kann glücklich nichts passen).

Also müssen wir sicherstellen, dass es nicht zu viel greift.

RewriteEngine On 
RewriteRule ^/sub1/([^/]+)/(.+)/$ http://www.example.com/subdir/$2-newsite/ [R=301,L] 

Ändern der *-+ stellt sicher, dass wir mindestens ein Zeichen entsprechen.

Das Ändern der . zu [^/] stellt sicher, dass wir "alles außer a /" übereinstimmen.

Am Ende wurde ein / hinzugefügt, um sicherzustellen, dass $ 2 den nachfolgenden Schrägstrich nicht erfasst.

Das sollte es hoffentlich beheben.

+0

Danke, aber das funktioniert nicht. Der erste Vorschlag ist keine Option, da sich das zweite Unterverzeichnis pro Produkt ändert. Der zweite Vorschlag leitet nichts um. Hast du eine andere Idee? –

+0

Die Antwort wurde aktualisiert –

Verwandte Themen