2009-03-21 8 views
2

Ich untersuche, wie URL-Rewriting in einem LAMP-Framework zu tun. Ich begann meine Forschung, indem ich WordPress-Code studierte. Ich sah auf Wordpress. Htaccess und sah dies:Verwalten Sie URL-Schreiben in .htaccess oder in PHP-Code?

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

Ich war überrascht UND erfreut! Ich war überrascht, weil ich keine dieser regulären Ausdruck-ähnlichen Regeln sah. Ich war erfreut, weil ich das Erlernen der Funktionsweise von .htaccess-Dateien verzögern kann (hastig nach Deadline), das obige Skript verwenden und die Variable $ _SERVER in PHP für URL-Daten parsen.

Also meine Frage ist, was sind die Vor-/Nachteile der Verwaltung von URL-Umschreibungen in der .htaccess-Datei? Und was sind die Vor- und Nachteile der Verwaltung von URL-Umschreibungen im PHP-Code?

Antwort

3

Dies wird in PHP zum Laden, Parsen und Ausführen von mehr PHP-Skripten/Code führen. Wenn Sie diesen Weg gehen, gelangen Sie nicht mit externen Weiterleitungen zur richtigen Seite. Denken Sie daran, dass PHP-Skripte im Wesentlichen jedes Mal kompiliert werden, wenn sie getroffen werden (ungeachtet des Opcode-Cachings).

mod_rewrite wird viel effizienter dabei sein. Es wird Sie auch zwingen, solche Regeln ziemlich einfach zu halten, da mod_rewrite nur reguläre Ausdrücke (und ein paar andere Dinge) verwenden kann, während Sie in PHP möglicherweise alles tun können (wie Datenbanksuchen, um die richtige Seite zu finden, usw.). Nicht gut.

Reguläre Ausdrücke sind nicht schwer. Normalerweise ist es nur ein Fall von:

RewriteRule ^account/orders/(\w+)$ /account/orders.php?type=$1 [L] 

90% + meiner Rewrite-Regeln sehen so aus. Ziemlich grundlegende Sachen.

+0

Dank Cletus. Ich habe deine URL-Rewrite-Regel ausprobiert und es gibt mir ungewöhnliche Ergebnisse. Ich habe eine Follow-up-Frage hier gestellt: http://StackOverflow.com/Questions/669161/whats-wrong-with-my-rewriterule – John

4

ModRewrite: Verwenden Sie diese Option, wenn nur wenige Variationen vorhanden sind. Wenn Sie viele reguläre Ausdrücke haben, wird der Server die Last fühlen (meine Erfahrung war mit 30 komplizierten regulären Ausdrücken). Dies sperrt Sie auch bei Apache (oder einem anderen Hersteller, der dies unterstützt). Vorteil: Es ist sehr einfach zu implementieren. Nachteil: Anbieter sperren, weniger Flexibilität.

PHP: verwenden, wenn Sie Anbieter wechseln (ich hatte Instanzen, wenn die Entwicklung in Apache durchgeführt wurde und das Live-System Lighttpd ausgeführt wurde). Verwenden Sie diese Option auch, wenn Sie ein benutzerdefiniertes URL-Rewriting bereitstellen möchten (wir haben dies mit einem Admin-Konfigurationsbildschirm verwendet, damit der Kunde seine eigenen URL-Umschreibungsregeln definieren kann). Vorteil: höhere Flexibilität und Plattformunabhängigkeit. Nachteil: Es kann möglicherweise mehr Systemressourcen verwenden.

+0

Warum verwenden Sie verschiedene Anwendungsstacks zwischen Entwicklung und Produktion? Das verlangt nach Ärger. –

Verwandte Themen