3 votes

Rewrite-rules cases "Internal server error" (error.log inside)

J'ai mis à jour mon ancien site eZ-Publish vers la nouvelle version 4.6 compatible avec PHP5 (précédemment en PHP4). Le site fonctionne sur mon serveur web local, mais lorsque j'essaie de l'installer sur le serveur, il échoue avec le message suivant dans le fichier error.log d'Apache :

[Mon Apr 16 14:33:22 2012] [error] [client 46.249.225.2] Request exceeded the limit of 20 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

J'ai déterminé qu'il s'agissait d'un problème dans les règles de réécriture, ce qui est étrange car j'utilise les mêmes règles de réécriture que les autres installations 4.6. Voici les règles de réécriture dans le fichier hôte d'Apache :

RewriteEngine On
Rewriterule ^/var/storage/.* - [L]
Rewriterule ^/var/[^/]+/storage/.* - [L]
#RewriteRule ^/var/cache/texttoimage/.* - [L]
#RewriteRule ^/var/[^/]+/cache/texttoimage/.* - [L]
RewriteRule ^/var/([^/]+/)?cache/(texttoimage|public)/.* - [L]
Rewriterule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
Rewriterule ^/share/icons/.* - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?|lib|flash)/.* - [L]
Rewriterule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
RewriteRule ^/favicon.ico - [L]
RewriteRule ^/robots.txt - [L]
RewriteRule ^/extension/sjsd/(FCKeditor|fcksjsd)/.* - [L]
RewriteRule ^/var/([^/]+/)?cache/public/.* - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/calendar/.* - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/calendar/ipopeng.htm - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/fckskins/.* - [L]
# Uncomment the following lines when using popup style debug.
# RewriteRule ^/var/cache/debug.html.* - [L]
# RewriteRule ^/var/[^/]+/cache/debug.html.* - [L]
RewriteRule .* /index.php

Quelqu'un a-t-il repéré des problèmes ?

3voto

Salman A Points 60620

En supposant que votre fichier .htaccess se trouve dans le répertoire Root, votre dernière règle crée une redirection interne qui relance le processus de réécriture avec /index.php comme l'URL à réécrire. La dernière règle réécrit /index.php comme /index.php et le cycle se poursuit. Essayez d'ajouter cette ligne dans votre fichier .htaccess avant les .* règle :

RewriteRule ^/index\.php$ - [L]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X