2017-03-15 6 views
1

Ich habe eine URL mit der Struktur http://localhost/slugone/dynamicslug?query=00000, die ich in http://localhost/slugone/dynamicslug/00000 umschreiben möchte..htaccess Rewrite ohne index.php

Ich habe zu bekommen .htaccess es geschafft, diese RewriteRule

RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L,R=301] 

zu erkennen, aber dies nicht tut, was ich es brauchen, statt /slugone/dynamicslug/00000 maskieren /slugone/dynamicslug?query=00000 zu sein, wird es stattdessen die ziemlich URL umleiten zu der URL mit Abfrageparametern.

/dynamicslug/ ist eine Schnecke, die ein bestimmtes Produkt auf der Seite zu zeigen, verwendet wird, und die ?query=00000 verwendet wird, eine Variante dieses Produkts zu wählen, so kann ich entweder nicht explizit /dynamicslug/ in meiner Rewrite-Regel verwenden.

Suche nach SO hat mir keine Ergebnisse gegeben, da alle Fragen, die ich finden kann, index.php in ihrer Neuschreibung verwenden, die ich nicht bin.

+0

Erstens, warum nicht einfach 'index.php' von diesen anderen entfernen Regeln? Es gibt nichts Magisches daran; es ist nur Text. Zweitens, bist du sicher, dass du wirklich eine Weiterleitung willst? Das ist das Gegenteil von dem, was Menschen in diesen Situationen normalerweise wollen. Es scheint viel wahrscheinlicher, dass Sie die Verwendung der "hübschen" URL (die ohne Parameter) aktivieren können, um auf die URL mit Parametern zuzugreifen, ohne eine Umleitung durchzuführen. –

+0

Hallo Ed, Sorry, ich war nicht klar dort. Ich habe die Frage aktualisiert, ich bin nach einer hübschen URL und nicht nach einer Weiterleitung. –

Antwort

3

Sie sollten Ihre RewriteRule umkehren:

RewriteCond %{QUERY_STRING} ^query=([0-9]+)$ 
RewriteRule ^slugone/([^/]+)$ /slugone/$1/%1? [L,R=301] 

EDIT:

Wenn Sie es wollen, als ziemlich URL verhalten sollten Sie nur die Umleitung in Ihrem ersten RewriteRule entfernen:

RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L] 
+0

Hallo Florian, Sorry, mir war nicht klar. Ich bin nicht nach einer Weiterleitung und bin nach einer schönen URL. Zweitens kann ich 'slugtwo' nicht in der Regel verwenden, da es sich um einen dynamischen Slug aus dem CMS handelt, den ich verwende. Ich habe die Frage aktualisiert, um dies zu berücksichtigen. –

+0

Dann sollten Sie den Umleitungsteil Ihrer ursprünglichen RewriteRule entfernen. Siehe meine Bearbeitung. –

+0

Danke Florian, das hat mich definitiv auf den richtigen Weg geschickt. –