Frage

Kann mir jemand erklären, was das mod_rewrite Regel tut?

Ich versuche, die Datei zu kommentieren, aber der Code scheint das Gegenteil von dem zu sagen, was ich denke, es tut

# Enable rewriting of URLs
RewriteEngine on


# Allow specified file types to be accessed
# Thing to test = URL
# Condition = not starting with  
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)


# RewriteRule will only be performed if the preceeding RewriteCond is fulfilled
# Remove index.php from all URLs     
# Pattern = anything (0 or more of any character)
# Substitution = index.php + the rest of the URL    
RewriteRule ^(.*)$ /index.php/$1 [L]  
War es hilfreich?

Lösung

^ = begin of line
( = begin group
.* = any character, any number of times
) = end group

Der $ 1 in dem zweiten Teil von der Gruppe im ersten Teil ersetzt wird.

Ist das eine Symfony-Regel? Die Idee ist, den gesamte Abfrage-String in das index.php (der Front-Controller) als Parameter zu übergeben, so dass der Front-Controller kann es analysieren und Route.

Andere Tipps

Der Browser sendet eine Anfrage an den Server (Apache, da Sie verwenden mod_rewrite):

GET Profil bearbeiten /

Apache nimmt diese Anforderung und sieht in seinen Konfigurationsdateien, dass Sie es so konfiguriert haben, alle Anfragen durch mod_rewrite zu übergeben. Also, es sendet die Zeichenfolge ‚Profil bearbeiten /‘ zu mod_rewrite. Mod_rewrite wendet dann die Regeln, die Sie darauf festgelegt, die dann die Anforderung (in der Art, wie ich in meinem vorherigen Post erklärt) transformiert zu ‚index.php / profile / bearbeiten‘. Nach mod_rewrite getan wird, setzt Apache die Anfrage ist, und sieht ‚oh, dieser Typ der Datei index.php anfordert‘. So nennt es die PHP-Interpreter, die dann analysiert und führen index.php - und bekommen ‚/ profile / bearbeiten‘ als Argument. Der PHP-Code (CI in Ihrem Fall) analysiert diese Argumente und weiß, wie das richtige Modul in Ihrer Anwendung aufrufen.

Also im Grunde ist es ein Weg, um immer index.php zu nennen, auch wenn die URL nicht index.php angeben ist. Auf diese Weise arbeitet index.php als Front-Controller: Es leitet alle Anfragen an die richtige Stelle in der Anwendung

.

Wenn die URL beginnt nicht mit index.php oder Bildern oder CSS oder js oder robots.txt, die Zeichenfolge „/index.php/“ vorangestellt wird.

Wie index.php wahrscheinlich eine ausführbare PHP-Anwendung ist, dann ist die index.php den Rest der URL von seiner cgi-Umgebung lesen kann. (Es wird in $ gespeichert {PATH_INFO})

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top