2010-01-15 6 views
7

Im installation phpancake, il y a un dossier comme celui-ci il shemaQue signifie cette règle de réécriture?

application/ 
install/ 
library/ 
public/ 
sql_schema/ 
install.html 
install.php 

Qu'est-ce que cette règle signifie?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /vote/public/index.php [NC,L] 

Répondre

11

La réécriture comporte deux parties. Le premier spécifie que si le nom de fichier demandé est un fichier normal avec une taille supérieure à 0 (-s), un lien symbolique (-l) ou un répertoire (-d), réécrire à nulle part, par ex. ne pas agir. [NC,L] signifie que la règle n'est pas sensible à la casse et que la dernière règle correspond à ces conditions.

Toutes les autres demandes sont transmises à /vote/public/index.php. Le but de cette réécriture est qu'un fichier réel existant puisse être extrait du serveur sans interférence. Sans la première règle, chaque demande de fichier (fichiers css et js, images, etc.) irait à index.php ce qui gâcherait très mal les choses.

Habituellement, cela est écrit dans une déclaration, cependant. Vous pouvez annuler les conditions, puis les [OR] statemens peut être retiré aussi:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /vote/public/index.php [NC,L] 

Cela équivaut à la déclaration d'origine.

+0

@Tatu Ulmanen: pouvez-vous expliquer ce que 'RewriteCond% {REQUEST_FILENAME} -f' signifierait? est-ce juste la "taille" que les options "-s" et "-f" diffèrent? Et aussi ce qui serait des fichiers réguliers (pas Binary?)? –

0

Ce sont principalement réécritures standard qui vérifient si le fichier demandé (ou un répertoire ou un lien symbolique) existe sur le disque, auquel cas le fichier/répertoire/etc. Devrait être utilisé.

Tous les autres matchs doivent aller à /votes/public/index.php

+0

de la réponse de @Tatu Ulmanen pouvez-vous expliquer ce que 'RewriteCond% {REQUEST_FILENAME} -f' signifierait? est-ce juste la "taille" que les options "-s" et "-f" diffèrent? Et aussi ce qui serait des fichiers réguliers (pas Binary?)? –

0

La première règle passera par toutes les demandes qui peuvent être mis en correspondance avec un fichier régulier avec une taille supérieure à zéro (-s), symbolique lien (-l) ou un répertoire (-d). Toute autre requête est récupérée par la deuxième règle et réécrite à /vote/public/index.php.