2010-12-17 5 views
0

Ich will wissen, mit diesem Code in .htaccessWas ist eine Magie mit 5 Zeilen Code in htaccess?

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

kann viele Dinge auf Abfrage-Strings von URLs tun wie WordPres mit gutem Beispiel getan hat. Es hängt von unserer Codierung ab oder ..? Was sind die geheimen Zutaten dafür?

Lassen Sie mich wissen, wenn Sie eine gute Quelle haben, um mit mir zu teilen. Alles in einem.

Antwort

8

Dies würde irgendeine Art von fangen alle Seite machen.

Lassen Sie uns erklären Zeile für Zeile

RewriteEngine On 

mod Rewrite aktivieren

RewriteBase/

die Basis-URL der Regeln auf '/'

RewriteCond %{REQUEST_FILENAME} !-f 

, wenn die angeforderte Datei doesn nicht vorhanden (dh kein jpg)

RewriteCond %{REQUEST_FILENAME} !-d 

wenn das angeforderte Verzeichnis nicht

RewriteRule . /index.php [L] 

Redirect alles

So wird umleiten zusammenzufassen index.php existiert es jede URL auf index.php, wenn der Dateiname oder Verzeichnis Doesn angefordert‘ t existieren.

und die documentation wenn Sie mehr lesen möchten.

+0

+1 nette Erklärung. http://goo.gl/Nkwxd so gut, um zu beginnen. – Blur

2

Die rewrite engine ermöglicht es, Pfade zu finden und Manipulationen, Umleitungen usw. basierend auf erweiterten Regeln durchzuführen.

Ihr spezifisches Beispiel richtet zwei conditions ein (der Pfad darf keine vorhandene reguläre Datei und kein Verzeichnis darstellen) und leitet dann alles andere an index.php weiter. Sie können dann alles, was Sie wünschen, in index.php implementieren, um die ursprüngliche Anfrage abzustimmen und/oder zu parsen (z. B. /news/some-title könnte an das Nachrichtenmodul weitergeleitet werden, wo die Nachricht über die slug abgerufen werden kann).

Manchmal sehen Sie die anfängliche Rewrite (n) erfolgt direkt in .htaccess umleiten. Das obige könnte wie folgt aussehen:

RewriteRule ^news/(.+)$ newsview.php?title=$1 [QSA,L]