2010-08-08 6 views
0

Je voudrais savoir pourquoi le fichier htaccess suivant produit une erreur 500:rewrite question url

<IfModule !mod_rewrite.c> 
    ErrorDocument 500 "Your_Server_Is_Not_Compatible: Apache does not have mod_rewrite loaded. Please check your Apache setup." 
    RedirectMatch 302 .* index.php 
</IfModule> 

<IfModule mod_rewrite.c> 

RewriteEngine on 
RewriteRule ^(.*)$ versions/0/1/$1 

</IfModule> 

merci merci à l'avance

+0

Donc je veux que tout fichier soit redirigé vers son équivalent dans le dossier/versions/0/1, par exemple, index.php => versions/0/1/index.php, etc ... – fabjoa

+2

Pourquoi ne pas demander le journal des erreurs? –

+0

je l'ai fait, et aucune erreur montre sur le journal – fabjoa

Répondre

2

Vous obtenez une erreur 500 parce que vous causez le serveur entrer une boucle infinie (dont il s'énerve, et lance une erreur pour arrêter).

Ceci est dû à votre RewriteRule, qui correspond toujours à:

RewriteRule ^(.*)$ versions/0/1/$1 

^(.*)$ correspond à la valeur versions/0/1/, donc après avoir effectué la réécriture initiale, l'ensemble de règles est réévalué et crée un cycle qui ressemble comme ceci:

versions/0/1/something 
versions/0/1/versions/0/1/something 
versions/0/1/versions/0/1/versions/0/1/something 

..et ainsi de suite.

Vous devez conditionner votre RewriteRule pour éviter la mise en boucle, peut-être comme suit:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/versions 
RewriteRule ^(.*)$ versions/0/1/$1 

En outre, votre déclaration ErrorDocument 500 ne fait pas beaucoup de sens, que vous ne serez jamais générer une erreur 500 parce que vous n N'ayez pas mod_rewrite activé, puisque vous avez entouré les directives pertinentes mod_rewrite avec <IfModule mod_rewrite.c>.

+0

Vous l'homme, Tim! Juste sur l'argent! Comme je ne devrais pas penser à ça! Eh bien, c'est pourquoi les réseaux web communautaires – fabjoa

+0

BTW, ce que je suis venu avec dans le cas où il aide \t RewriteEngine sur \t \t # dev \t # hack pour éviter boucle infinie \t RewriteCond% {REQUEST_URI}!/versions/ \t # redirige vers dev \t RewriteRule^dev /(.+) versions/0/1/$ 1 [L] \t \t # bidouille stable \t # pour éviter boucle infinie \t RewriteCond% {REQUEST_URI}!/Versions/ \t # réoriente à stable \t RewriteRule^(. +) Versions/0/0/1 $ – fabjoa