PageRenderTime 38ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/fr/installation/url-rewriting.rst

https://github.com/steinkel/docs
ReStructuredText | 319 lines | 253 code | 66 blank | 0 comment | 0 complexity | 2af7d7479531a79766f430cd6a4c2abb MD5 | raw file
  1. URL Rewriting
  2. #############
  3. Apache et mod\_rewrite (et .htaccess)
  4. =====================================
  5. Alors que CakePHP est construit pour travailler avec mod\_rewrite et
  6. habituellement il l'est– nous avons remarqué que certains utilisateurs
  7. se battent pour obtenir un bon fonctionnement sur leurs systèmes.
  8. Ici il y a quelques trucs que vous pourriez essayer pour que cela
  9. fonctionne correctement. Premièrement, regardez votre fichier
  10. httpd.conf (Assurez-vous que vous avez édité le httpd.conf du système
  11. plutôt que celui d'un utilisateur- ou le httpd.conf d'un site spécifique).
  12. Ces fichiers peuvent varier selon les différentes distributions et les versions
  13. d'Apache. Vous pouvez allez voir
  14. http://wiki.apache.org/httpd/DistrosDefaultLayout pour plus d'informations.
  15. #. Assurez-vous qu'un .htaccess est permis et que AllowOverride est défini à
  16. All pour le bon DocumentRoot. Vous devriez voir quelque chose comme::
  17. # Chaque répertoire auquel Apache a accès peut être configuré avec
  18. # respect pour lesquels les services et les fonctionnalités sont
  19. # autorisés et/ou désactivés dans ce répertoire (et ses sous-répertoires).
  20. #
  21. # Premièrement, nous configurons "par défault" pour être un ensemble
  22. # très restrictif de fonctionnalités.
  23. #
  24. <Directory />
  25. Options FollowSymLinks
  26. AllowOverride All
  27. # Order deny,allow
  28. # Deny from all
  29. </Directory>
  30. Pour les utilisateurs qui ont apache 2.4 et supérieur, vous devez modifier
  31. le fichier de configuration pour votre ``httpd.conf`` ou la configuration de
  32. l'hôte virtuel pour ressembler à ce qui suit::
  33. <Directory /var/www/>
  34. Options FollowSymLinks
  35. AllowOverride All
  36. Require all granted
  37. </Directory>
  38. #. Assurez-vous que vous avez chargé correctement mod\_rewrite. Vous devriez
  39. voir quelque chose comme::
  40. LoadModule rewrite_module libexec/apache2/mod_rewrite.so
  41. Dans la plupart des systèmes, ceux-ci vont être commentés donc vous aurez
  42. juste besoin de retirer les symboles # en début de ligne.
  43. Après que vous avez fait des changements, re-démarrez Apache pour être sûr
  44. que les paramètres soient actifs.
  45. Vérifiez que vos fichiers .htaccess sont effectivement dans le bon
  46. répertoire.
  47. Cela peut arriver pendant la copie parce que certains systèmes
  48. d'exploitation traitent les fichiers qui commencent par '.' en caché et du
  49. coup ne les voient pas pour les copier.
  50. #. Assurez-vous que votre copie de CakePHP vient de la section des
  51. téléchargements du site de notre dépôt Git, et a été dézippé correctement
  52. en vérifiant les fichiers .htaccess.
  53. Le répertoire root de CakePHP (a besoin d'être copié dans votre document,
  54. cela redirige tout vers votre app CakePHP)::
  55. <IfModule mod_rewrite.c>
  56. RewriteEngine on
  57. RewriteRule ^$ app/webroot/ [L]
  58. RewriteRule (.*) app/webroot/$1 [L]
  59. </IfModule>
  60. Le répertoire app de CakePHP (sera copié dans le répertoire supérieur de votre
  61. application avec Bake)::
  62. <IfModule mod_rewrite.c>
  63. RewriteEngine on
  64. RewriteRule ^$ webroot/ [L]
  65. RewriteRule (.*) webroot/$1 [L]
  66. </IfModule>
  67. Le répertoire webroot de CakePHP (sera copié dans le webroot de votre
  68. application avec Bake)::
  69. <IfModule mod_rewrite.c>
  70. RewriteEngine On
  71. RewriteCond %{REQUEST_FILENAME} !-d
  72. RewriteCond %{REQUEST_FILENAME} !-f
  73. RewriteRule ^(.*)$ index.php/$1 [QSA,L]
  74. </IfModule>
  75. Si votre site CakePHP a toujours des problèmes avec mod\_rewrite,
  76. essayez de modifier les paramètres pour les Hôtes Virtuels. Si vous
  77. êtes sur Ubuntu, modifiez le fichier /etc/apache2/sites-available/default
  78. (l'endroit dépend de la distribution). Dans ce fichier, assurez-vous
  79. que ``AllowOverride None`` a été changé en ``AllowOverride All``, donc vous
  80. devez avoir::
  81. <Directory />
  82. Options FollowSymLinks
  83. AllowOverride All
  84. </Directory>
  85. <Directory /var/www>
  86. Options Indexes FollowSymLinks MultiViews
  87. AllowOverride All
  88. Order Allow,Deny
  89. Allow from all
  90. </Directory>
  91. Si vous êtes sur Mac OSX, une autre solution est d'utiliser l'outil
  92. `virtualhostx <http://clickontyler.com/virtualhostx/>`_ pour faire un Hôte
  93. Virtuel pour pointer vers votre dossier.
  94. Pour beaucoup de services d'hébergement (GoDaddy, 1and1), votre serveur web
  95. est en fait déjà distribué à partir d'un répertoire utilisateur qui
  96. utilise déjà mod\_rewrite. Si vous installez CakePHP dans un répertoire
  97. utilisateur (http://exemple.com/~username/cakephp/), ou toute autre
  98. structure d'URL qui utilise déjà mod\_rewrite, vous aurez besoin d'ajouter
  99. les requêtes (statements) RewriteBase aux fichiers .htaccess que CakePHP
  100. utilise (/.htaccess, /app/.htaccess, /app/webroot/.htaccess).
  101. Ceci peut être ajouté dans la même section que la directive RewriteEngine,
  102. donc par exemple, votre fichier .htaccess dans webroot ressemblerait à ceci::
  103. <IfModule mod_rewrite.c>
  104. RewriteEngine On
  105. RewriteBase /path/to/cake/app
  106. RewriteCond %{REQUEST_FILENAME} !-d
  107. RewriteCond %{REQUEST_FILENAME} !-f
  108. RewriteRule ^(.*)$ index.php/$1 [QSA,L]
  109. </IfModule>
  110. Les détails de ces changements dépendront de votre configuration, et
  111. pourront inclure des choses supplémentaires qui ne sont pas liées à
  112. CakePHP. Merci de vous renseigner sur la documentation en ligne d'Apache
  113. pour plus d'informations.
  114. #. (Optionel) Pour améliorer la configuration de production, vous devriez
  115. empêcher les assets invalides d'être parsés par CakePHP. Modifiez votre
  116. webroot .htaccess pour quelque chose comme::
  117. <IfModule mod_rewrite.c>
  118. RewriteEngine On
  119. RewriteBase /path/to/cake/app
  120. RewriteCond %{REQUEST_FILENAME} !-d
  121. RewriteCond %{REQUEST_FILENAME} !-f
  122. RewriteCond %{REQUEST_URI} !^/(app/webroot/)?(img|css|js)/(.*)$
  123. RewriteRule ^(.*)$ index.php [QSA,L]
  124. </IfModule>
  125. Ce qui est au-dessus va simplement empêcher les assets incorrects d'être
  126. envoyés à index.php et à la place d'afficher la page 404 de votre serveur
  127. web.
  128. De plus, vous pouvez créer une page HTML 404 correspondante, ou utiliser la
  129. page 404 de CakePHP intégrée en ajoutant une directive ``ErrorDocument``::
  130. ErrorDocument 404 /404-not-found
  131. De belles URLs sur nginx
  132. ========================
  133. nginx ne fait pas usage de fichiers .htaccess comme Apache et Lighttpd, il est
  134. donc nécessaire de créer les URLs réécrites disponibles dans la configuration
  135. du site. selon votre configuration, vous devrez modifier cela, mais à tout le
  136. moins, vous aurez besoin de PHP fonctionnant comme une instance FastCGI.
  137. ::
  138. server {
  139. listen 80;
  140. server_name www.example.com;
  141. rewrite ^(.*) http://example.com$1 permanent;
  142. }
  143. server {
  144. listen 80;
  145. server_name example.com;
  146. # root directive should be global
  147. root /var/www/example.com/public/app/webroot/;
  148. index index.php;
  149. access_log /var/www/example.com/log/access.log;
  150. error_log /var/www/example.com/log/error.log;
  151. location / {
  152. try_files $uri $uri/ /index.php?$args;
  153. }
  154. location ~ \.php$ {
  155. include /etc/nginx/fastcgi_params;
  156. try_files $uri =404;
  157. fastcgi_pass 127.0.0.1:9000;
  158. fastcgi_index index.php;
  159. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  160. }
  161. }
  162. Si pour une raison exotique vous ne pouvez pas changer votre répertoire racine
  163. et devez lancer votre projet à partir d'un sous-dossier comme
  164. example.com/subfolder/, vous devrez injecter "/webroot" dans chaque requête.
  165. ::
  166. location ~ ^/(subfolder)/(.*)? {
  167. index index.php;
  168. set $new_uri /$1/webroot/$2;
  169. try_files $new_uri $new_uri/ /$1/index.php?$args;
  170. ... php handling ...
  171. }
  172. .. note::
  173. Les récentes configurations de PHP-FPM sont définies pour écouter sur le
  174. socket php-fpm au lieu du port TCP 9000 sur l'adresse 127.0.0.1. Si vous
  175. obtenez une erreur 502 de mauvaise passerelle avec la configuration du
  176. dessus, essayez de remplacer le port TCP du fastcgi_pass par le chemin du
  177. socket (ex: fastcgi_pass unix:/var/run/php5-fpm.sock;).
  178. Rewrites d'URL sur IIS7 (serveurs Windows)
  179. ==========================================
  180. IIS7 ne supporte pas nativement les fichiers .htaccess. Bien qu'il existe des
  181. add-ons qui peuvent ajouter ce support, vous pouvez aussi importer les règles
  182. des .htaccess dans IIS pour utiliser les rewrites natifs de CakePHP. Pour ce
  183. faire, suivez ces étapes:
  184. #. Utilisez `l'installeur de la plateforme Web de Microsoft
  185. <http://www.microsoft.com/web/downloads/platform.aspx>`_ pour installer
  186. l'URL
  187. `Rewrite Module 2.0 <http://www.iis.net/downloads/microsoft/url-rewrite>`_
  188. ou téléchargez le directement (`32-bit <http://www.microsoft.com/en-us/download/details.aspx?id=5747>`_ / `64-bit <http://www.microsoft.com/en-us/download/details.aspx?id=7435>`_).
  189. #. Créez un nouveau fichier dans votre dossier CakePHP, appelé web.config.
  190. #. Utilisez Notepad ou tout autre éditeur XML-safe, copiez le code suivant
  191. dans votre nouveau fichier web.config...
  192. .. code-block:: xml
  193. <?xml version="1.0" encoding="UTF-8"?>
  194. <configuration>
  195. <system.webServer>
  196. <rewrite>
  197. <rules>
  198. <rule name="Rewrite requests to test.php"
  199. stopProcessing="true">
  200. <match url="^test.php(.*)$" ignoreCase="false" />
  201. <action type="Rewrite" url="app/webroot/test.php{R:1}" />
  202. </rule>
  203. <rule name="Exclude direct access to app/webroot/*"
  204. stopProcessing="true">
  205. <match url="^app/webroot/(.*)$" ignoreCase="false" />
  206. <action type="None" />
  207. </rule>
  208. <rule name="Rewrite routed access to assets(img, css, files, js, favicon)"
  209. stopProcessing="true">
  210. <match url="^(img|css|files|js|favicon.ico)(.*)$" />
  211. <action type="Rewrite" url="app/webroot/{R:1}{R:2}"
  212. appendQueryString="false" />
  213. </rule>
  214. <rule name="Rewrite requested file/folder to index.php"
  215. stopProcessing="true">
  216. <match url="^(.*)$" ignoreCase="false" />
  217. <action type="Rewrite" url="index.php"
  218. appendQueryString="true" />
  219. </rule>
  220. </rules>
  221. </rewrite>
  222. </system.webServer>
  223. </configuration>
  224. Une fois que le fichier web.config est créé avec les bonnes règles de
  225. réécriture des liens de IIS, les liens CakePHP, les CSS, le JavaScript, et
  226. le reroutage devraient fonctionner correctement.
  227. URL-Rewriting sur lighttpd
  228. ==========================
  229. Lighttpd ne supporte pas les fonctions .htaccess, par conséquent vous pouvez
  230. retirer tous les fichiers .htaccess. Dans la configuration lighttpd,
  231. assurez-vous d'activer "mod_rewrite". Ajoutez une ligne:
  232. ::
  233. url.rewrite-if-not-file =(
  234. "^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3"
  235. )
  236. Règles de rewrite URL pour Hiawatha
  237. ===================================
  238. La règle nécessaire UrlToolkit (pour le rewriting URL) pour utiliser CakePHP
  239. avec Hiawatha est:
  240. ::
  241. UrlToolkit {
  242. ToolkitID = cakephp
  243. RequestURI exists Return
  244. Match .* Rewrite /index.php
  245. }
  246. Je ne veux / ne peux utiliser l'URL rewriting
  247. =============================================
  248. Si vous ne voulez ou ne pouvez pas utiliser l'URL rewriting sur votre serveur
  249. web, référez-vous à la section
  250. :ref:`core configuration<core-configuration-baseurl>`.
  251. .. meta::
  252. :title lang=fr: URL Rewriting
  253. :keywords lang=fr: url rewriting, mod_rewrite, apache, iis, plugin assets, nginx