Ich habe ein Problem mit URL-Umschreiben und HTAccess. Ich habe eine URL wie www.example.com/index.php?fc=module&module=mymodule&controller=name&id=35
aber es ist zu komplex für Leute, also möchte ich es ändern. Ich habe ein Verzeichnis in meinem Gastgeber wie example.com/web/title-for-name/
, wo ich diese .htaccess setzen:htaccess URL Rewrite funktioniert nicht in der Produktion, funktioniert aber lokal
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase/
RewriteRule ^(.*)$ index.php?fc=module&module=mymodule&controller=name&id=35$1 [L,NC]
Ich habe es in meinem lokalen getestet und es scheint zu funktionieren, aber wenn ich es in der Produktion testen umleiten mich nur meine URL zu ändern . Mod-Rewrite ist aktiviert, weil mein Web andere URLs umschreibt. Außerdem ist AllowOverride
auf All
eingestellt. Der Hauptunterschied zwischen meiner lokalen und der Produktion besteht darin, dass ich Varnish nicht verwende.
Dies würde _append_ jeden zusätzlichen URL-Pfad auf das Ende der substituierten URL, als Teil des Parameters 'id' - ist das die Absicht? Ansonsten ist nichts an der Direktive falsch, die ein _externes Redirect_ verursachen würde. Die Verwendung von Varnish könnte die Ursache dafür sein. – MrWhite
Ja, aber es könnte besser werden. Ich möchte die GET-Vars der Url anhängen, aber es fügt auch den index.html-Teil an, der unbrauchbar ist. – Serpes
Wenn Sie die GET-Variablen anhängen möchten, benötigen Sie das Flag "QSA" (Query String Append). Der URL-Pfad, wie er durch das 'RewriteRule'-Muster abgeglichen wird, schließt die Abfragekette aus. (Es sieht nicht so aus, als ob Sie die "$ 1" -Rückreferenz erfassen müssten.) – MrWhite