2017-06-21 8 views
1

Meine Website ist nur index.php und jede Seite wird daraus gelesen. Ich benutze kein WordPress.htaccess rewrite Regel für Affiliate-ID

Was ich tun möchte, ist das gleiche, was WordPress mit seiner Seitenstruktur tut. In Wordpress können Sie die Rewrite-Regel so einstellen, dass ein nachfolgendes Unterverzeichnis einen Wert an index.php übergeben kann.

Ich habe einen Client, der ein Affiliate-Netzwerk und die Basis-URL baut zum Beispiel ist:

mywebsite.com/?id=viktor 

Sie möchten URL anstatt analysieren, so dass es für die Kunden viel einfacher ist.

, d. H. mywebsite.com/u/viktor würde zu mywebsite.com/?id=viktor "umschreiben".

Was wäre die .htaccess Regel oder assoziierte PHP würde ich in index.php setzen müssen?

Offensichtlich werden wir keinen 'u' Ordner auf der Seite haben. :)

Danke für Ihre Hilfe.

This related question I believe has the code we're looking for however I'm not sure how it would apply in this situation

+0

Welches Format hat die Affiliate-ID? Sollte das Neuschreiben den Benutzer immer wieder auf die Startseite von "mywebsite.com" zurückbringen oder die von ihm angeforderte Seite, indem der URL-Parameter übergeben wird? – BenM

+0

Es ist ein Benutzername wie id = viktor, aber wir wollen nicht, dass er umleitet. Wenn es bookmarked wird es immer noch als mywebsite.com/u/viktor angezeigt und übergibt die ID-Variable an index.php – Viktor

Antwort

2

Sie können es wie folgt tun:

RewriteEngine On 
RewriteRule ^u/(.+)$ /?id=$1 [NE,L] 

Wenn Sie auch eine vorhandene Abfrage-String (wie /u/viktor?param=value) müssen erhalten, verwenden Sie diese:

RewriteEngine On 
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L] 

aktualisieren

Nun, es ist eine schlechte Übung, relative URLs zu verwenden (aus diesem Grund), aber wenn Sie wirklich vermeiden wollen, all Ihren Code zu aktualisieren, könnte das leicht passieren mit einem Skript oder ein Befehl ausgeführt werden, können Sie dies tun:

RewriteEngine On 
RewriteRule ^u/(.+/.+) /$1 [NE,L] 
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L] 

die alles würde umschreiben, die in einem Ordner unter /u/ root verwiesen wird. Aber es unterbricht das Browser-Caching, da alle Ihre Ressourcen jetzt zwei URLs haben. Eigentlich sollten Sie nur Ihre URLs auf absolut aktualisieren.

Wenn die oben nicht für Sie arbeiten und Sie nur bestimmte Ordner neu zu schreiben, tun Sie es wie folgt aus:

RewriteEngine On 
RewriteRule ^u/((?:assets|images|css)/.+) /$1 [NE,L] 
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L] 

entsprechend Ordnernamen zu ersetzen.

+0

Dies funktioniert aber UNIX sieht immer noch die CSS, d. H. Href = "Assets/CSS/custom-animations.css" als innerhalb eines 'U' -Ordner, so dass die Bilder nicht zusammenhängend referenziert werden. Wir müssten reingehen und jede Codezeile wiederholen, je hinzufügen und hinzufügen. Gibt es eine Möglichkeit, die Regel neu zu schreiben, aber das 'Verzeichnis' immer noch zurück in den Root zu verschieben, obwohl wir das/u/- siehe http://ufunnel.net/u/earthgrid - Sie können das CSS sehen und alles isn ' t laden, weil es im Ordner 'u' denkt. Wir sind nah !!!!! – Viktor

+0

Gibt es einen einfacheren Weg als alle relativen Verweise jeder Datei und jeder Seite auf absolute Werte zu ändern? wie - wenn Sie umschreiben - auch ein Verzeichnis fallen lassen, d. H .. .. für alle Referenzen. Es ist ein Geistesblender! Danke für Ihre Hilfe! – Viktor

+0

Ich habe ein Update dazu hinzugefügt. Es ist nicht UNIX, das sieht es so, es ist der Webbrowser. – SuperDuperApps

1

Das Problem, das Sie hier haben, ist Viktor, dass Wordpress die Original URL überprüft, wenn sie eine Anforderung verarbeitet. Dies liegt daran, dass es eigene mod_rewrite-Regeln hat, um alles in index.php umzuschreiben.

So können Sie nicht tun, was Sie wollen mit mod_rewrite, weil WordPress Ihre umgeschriebene URL nicht betrachten wird, und wird es als /u/viktor verarbeiten. Du kannst es mit einer 301-Weiterleitung machen, aber du hast bereits gesagt, dass du das nicht willst.

Um dies richtig funktionieren zu lassen, müssen Sie mit WordPress arbeiten, damit diese URLs funktionieren, und vielleicht ein Plug-in erstellen. Ich würde nicht vorschlagen, etwas zu WordPress index.php hinzuzufügen, da es nur überschrieben wird, wenn WordPress aktualisiert wird.

+0

Das OP verwendet nicht Wordpress, sie wollen nur einige Dinge, die Wordpress verwendet. – Iceman

+1

So ich sehe jetzt die Frage wurde aktualisiert :) Danke für die Köpfe hoch. – SuperDuperApps