2016-09-30 4 views
0

Meine bisherigen neu geschrieben Regeln arbeiten gut wie unten:Wie 301 Umleiten, die bereits neu geschrieben

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^product-detail/([\w-.]+)/?$ product-detail.php?e=$1 [NC,L] 

Es ist mysite.com/product-detail/laptop

In Suchen, 5000 Produktergebnisse sind bereits da. Ich will als

mysite.com/electronics/product-detail/laptop

Ich google nicht 301 neuen Ordner umleiten möchten meine Ergebnisse zerstören. Bitte hilf mir.

Antwort

0

Ich glaube, es so etwas sein sollte:

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^product-detail/([\w-.]+)/?$ /electronics/product-detail/$1 [NC,R=301,L] 
RewriteRule ^electronics/product-detail/([\w-.]+)/?$ product-detail.php?e=$1 [NC,L] 

Ihre 1., sind 2. Regeln unverändert. Dann leiten Sie alle alten URLs mit dem Umleitungscode 301 an neue URLs weiter. Verarbeiten Sie dann wie bei alten URLs neue URLs an Ihr Skript.

Ich nehme hier an, dass Ihr Pfadpräfix Elektronik eine Konstante ist, d. H. Es hängt nicht von der Produktkategorie ab. In diesem Fall müssten Sie die Weiterleitung im Skript vornehmen, da Apache nicht in der Lage ist, die Kategorie des Produkts zu erraten (z. B. wenn von/product-detail/hugo-boss auf =>/parfume/product- umgeleitet wird). Detail/hugo-Chef).

+0

Sehr geehrte. Ich habe diese Regeln versucht, wie Sie vorgeschlagen, RewriteRule^Elektronik/Produkt-Detail/([\ w -.] +) /? $ Produkt-Detail.php? E = $ 1 [NC, L] Funktioniert gut. Die Umleitungsregel 301 wird jedoch nach unten umgeleitet, wenn ein Trocknerdetail übernommen wird; mysite.com/electronics/product-detail/dryer; Es leitet um zu; mysite.com/home3/kproducts/public_html/electronics/product-detail/dryer es wird zu den physischen Ordnern des Hostings umgeleitet. .. Danke für Ihre Hilfe. –

+0

Versuchen Sie einen Schrägstrich am Anfang hinzufügen: '/ Elektronik/Produkt-Detail/$ 1 [NC, R = 301, L]' –

+0

Vielen Dank, es hat funktioniert. –