Question

Voici mon fichier .htaccess

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule subpage\?sid /index.php [R=301,L,NC]

Ma demande est http://example.com/subpage?sid

Il retourne 404 Introuvables au lieu de rediriger vers index.php

J'ai essayé de ne pas échapper à la? et modification de la demande en http://example.com/subpage\?sid

J'ai essayé des tas de choses pour essayer de faire fonctionner cela, mais je suis maintenant perplexe.

Était-ce utile?

La solution

QUERY_STRING ne fait pas partie de l'URI. Extrait de la documentation de RewriteRule :

  

Remarque: chaîne de requête

     

Le modèle Modèle ne sera pas comparé à la chaîne de requête. Au lieu de cela, vous devez utiliser un RewriteCond avec la variable % {QUERY_STRING} .

Comme le dit la doc, vous devrez utiliser un RewriteCond, quelque chose du genre:

RewriteCond %{QUERY_STRING} (^|&)sid([&=]|$) [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

Si% {QUERY_STRING} n'est vraiment pas une option, essayez:

# Apache is supposed to use PCRE, but doesn't seem to like "\\s"
RewriteCond %{THE_REQUEST} subpage?sid[^!-~] [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

De plus, vous n’avez presque jamais besoin de RewriteBase puisque vous l’utilisez ("RewriteBase /"). Commentez la ligne et testez-la pour vous en assurer, mais vous constaterez probablement que vous pouvez la supprimer sans aucun problème.

Autres conseils

Peut-être devez-vous vérifier le paramètre VirtualHost de votre site et définir le paramètre AllowOverride pour le répertoire correspondant?

<Directory /var/www/vhosts/some_host>
     ....
     AllowOverride All
</Directory>

En savoir plus sur le AllowOverride d'Apache

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top