Brauche Hilfe mit einem .htaccess-URL-Rewriter

Brauche Hilfe mit einem .htaccess-URL-Rewriter

Ich versuche, ein anderes SEO-System mit PHP/.htaccess zu erstellen ...

Für die Anwendung benötige ich folgende Regeln:

  1. Muss alle URLs abfangen, die nicht mit einer Erweiterung enden (www.foo.com --> abfangen | www.foo.com/catch-me --> abfangen | www.foo.com/dont-catch.me --> nicht abfangen).
  2. Muss alle URLs erfassen, die mit .php* enden (.php, .php4...) (das sind die Ausnahmen zu Regel Nr. 1).
  3. Alle Regeln müssen nur in einigen Verzeichnissen gelten undnichtin ihren Unterverzeichnissen (bisher/ und /framework).
  4. Die htaccess muss die eingegebene URL in einem GET-Wert senden, damit ich in PHP damit arbeiten kann.

Kann mir irgendein Mod-Rewrite-Assistent helfen?

Bearbeiten:

OK, nachdem ich die vorgeschlagenen Beiträge gelesen hatte, bin ich darauf gekommen, aber ich glaube, es steckt in einer Schleife fest ... Kann jemand helfen?

<IfModule mod_rewrite.c>
RewriteEngine On
# 1
RewriteCond %{REQUEST_FILENAME} !\.[^/]+$ [OR]
# 2
RewriteCond %{REQUEST_FILENAME} \.php.*$
# 4
RewriteRule ^(.*)$ http://localhost/seo-urls/seo-urls-mapper.php%3Frequested=$1?%{QUERY_STRING}
</IfModule>

Da ich dies während meiner Weihnachtsferien abschließen möchte, setze ich eine Prämie aus :) Danke für Ihre Hilfe und schöne Feiertage!

Antwort1

Versuchen Sie Folgendes als Ausgangspunkt:

RewriteEngine On

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  !\.(.*)
RewriteCond %{REQUEST_URI}  !^/(framework|restricted)/
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  \.php.?$
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

Erster Regelsatz:

  1. Führen Sie diese Regel nicht aus, wenn der uriGET-Parameter gesetzt ist (sonst kommt es nach dem Anhängen des uriParameters zu einer Schleife bei der Umleitung zum Zielskript).
  2. Wenn die URI ein enthält, .überspringen Sie diesen Regelsatz (Sie möchten möglicherweise eine spezifischere Regel für bestimmte Erweiterungen erstellen, aber dies funktioniert)
  3. Wenn sich die URI in einem eingeschränkten Verzeichnis befindet, überspringen Sie diesen Regelsatz
  4. Leiten Sie weiter zu index.php(ggf. müssen Sie das Ziel ändern) und setzen Sie den uriGET-Parameter

Zweiter Regelsatz:

  1. Wenn der uriParameter gesetzt ist, überspringe diesen Regelsatz, um eine Schleife zu verhindern
  2. .phpFahren Sie fort, wenn die angeforderte URI mit , .php4, oder ähnlich endet ( .php123würdenichtumgeleitet werden)
  3. Leiten Sie weiter zu index.php(ggf. müssen Sie das Ziel ändern) und setzen Sie den uriGET-Parameter

Man muss kein „Zauberer“ sein, um Mod_Rewrite-Regeln zusammenzustellen – nehmen Sie sich etwas Zeit, um selbst zu experimentieren und die von jscott empfohlene Anleitung durchzulesen.

TunStellen Sie alle Ihre theoretischen Fragen hier, wenn Sie gute Erklärungen wünschen (im Gegensatz zu praktischen Fragen, bei denen es so scheint, als würden die Antwortenden Ihr Projekt per Crowdsourcing unterstützen, anstatt Ihr Wissen zu erweitern).

verwandte Informationen