Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Qu'est-ce qui cause un comportement aussi étrange avec mod_rewrite?

Voici ma règle:

RewriteRule ^user/(\d+)$ rewrite.php?id=$1

Il redirige mais

$_GET['id']

pas installé. Si je change la règle ci-dessus sur:

RewriteRule ^anything/(\d+)$ rewrite.php?id=$1

Ça fonctionne. Pourquoi on travaille et l'autre n'est pas?

Voici plus d'informations:

Aucun catalogue nommé

user

Le seul autre fichier .htaccess La hiérarchie est vide.


anything

peut être remplacé par quelque chose d'autre que

user

.

Rafraîchir:

j'ai vérifié

rewritelog

Et il est vide.
Invité:

Emilie

Confirmation de:

Cela se produira si

MultiViews

inclus (partie mod_negotiation). Si un MultiViews activé et vous demandez

/user

, Où

/user.php

Il y a comme fichier physique, puis mod_negotiation lance la sous-requête interne pour

users.php

(Il "cherche" un fichier approprié qui retournera le bon type mime).

Vous devez éteindre MultiViews dans votre

.htaccess

déposer:

Options -MultiViews

MultiViews Défaut désactivé dans Apache, Cependant, certains hôtes courants pour une raison quelconque l'incluent.

Alice

Confirmation de:

J'ai finalement trouvé la cause du problème ... Évident (Et ce nulle part n'est pas documenté pour que je puisse trouver), Si vous avez un fichier (dans ce cas PHP)

Avec le même nom que le premier catalogue virtuel

La règle écrasante ne fonctionne pas. (Cycles de redirection, paramètres manquants, etc.)

Par exemple, la règle suivante:

#RewriteRule ^user/(\d+)$ user.php?id=$1 [L]

Ne fonctionnera pas s'il y a un fichier nommé user.php

Dans le même répertoire que le fichier PHP

.

Pour répondre aux questions, connectez-vous ou registre