2016-07-13 11 views
0

Ich habe ein Suchformular mit GET-Anfrage. Wenn ich Enter drücke, ist die URL wie immer nicht SEO-freundlich, gibt es eine Möglichkeit, wie man SEO-freundliche URLs anzeigen kann, wenn man sie eingibt?Erstellen Sie SEO Friendly URLs von _GET Abfrage

Eg.

GET Anfrage http://someurl.com?a=search&query=what+are+you+looking+for
SEO URL sollte http://someurl.com/search/what+are+you+looking+for sein

ich bereits eine Regel erstellt

RewriteRule ^search/(\w+) index.php?a=search&query=$1 

in meinem .htaccess das funktioniert, wenn ich die SEO URL in die Adresse manuell eingeben Bar. Also denke ich, es ist nur eine Frage der Sicherheit, wenn ich in das Suchfeld trete, lädt es die SEO Url statt der anderen.

+0

Sie müssen Javascript verwenden, um die gewünschte URL zu erstellen und Ihr Suchformular auf diese Weise "einzureichen", oder Sie geben eine Weiterleitung von Ihrem Server an die gewünschte URL aus. – deceze

+2

Es ist nichts falsch mit der Verwendung von GET-Variablen in diesem Fall; Es ist viel "korrekter" als die Abfrage der URL hinzuzufügen. Auch warum in aller Welt möchten Sie eine Suchergebnisseite SEO? Suchmaschinen gehen vermutlich nicht umhin, Suchseiten zu indizieren/einzuordnen. Sie enthalten bei jedem Besuch unterschiedliche Inhalte, sodass sie für Suchmaschinen als nutzlos angesehen werden. Etwas wie ".../search? Query = abc" wäre in Ordnung. –

+0

@ SverriM.Olsen macht Sinn! Aber, wenn ich den Suchlink mit jemandem teilen möchte, besiegt diese ganze Schnur den Zweck der SEO freundlichen URLs. –

Antwort

2

Sie haben Ihre Orignal uri auf den neuen uri umleiten, fügen Sie die followng vor Ihrer bestehenden Regel:

RewriteEngine on 
RewriteCond %{THE_REQUEST} /(?:index\.php)?\?a=search&query=(.+)\sHTTP [NC] 
RewriteRule^/search/%1? [NE,L,R] 
+0

thanxx ändert die URL wie angefordert, aber ich kann die Variable nicht auswählen. Wie in den Variablen $ a und $ q. Gibt es auch eine Möglichkeit, lokal damit zu arbeiten? Ich kann das nicht erreichen, wenn ich nicht auf den Server hochlade –

+0

Entschuldigung, was meinst du mit 'Ich kann die Variable nicht auswählen '? – starkeen

+0

wie in der Variablen $ a und $ query. Wie erfasse ich, wonach gesucht wird? Es ändert nur die URL, aber die Variablen können nicht abgerufen werden. –

0

können Sie diese verwenden in Ihrem .htaccess:

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)$ /?a=$1&query=$2 [L] 

Diese Sie mit der URL verlassen:

http://someurl.com/search/what+are+you+looking+for

+0

Hey, tut mir leid, aber es hat nicht funktioniert –

+0

Haben Sie Ihren Cache vor der Hand gelöscht? – Lag

0

Ich tue dies auf dem Weg :)

Dies ist das Formular für die Suche

<form method="post"> 
    <input type="text" name="search" placeholder="search"/> 
    </form> 

Bevor Form

if(isset($_POST['search'])){ 
echo '<script>window.location = "www.domain.com/search/'.$_POST['search'].'"</script>'; 
} 

Und in .htaccess

RewriteEngine on 
RewriteRule ^search/([^/]*)$ index.php?page=search&search=$1 [NC,L]