J'ai .htaccess
contenant RewriteCond
et RewriteRule
.
Avant, cela fonctionnait très bien (cela fait longtemps que je n’ai pas vérifié), mais maintenant cela ne fonctionne plus. Je l'ai réduit à l'exemple suivant.
Supposons que je veuille rediriger www.mydomain.com/foo
mais pas lorsque foo
se produit ailleurs; Ainsi, par exemple, ne redirigez pas si l'URI est /abc/foo
, /abcfoo
ou /foobar
.
Voici mon fichier .htaccess
actuel:
Options -Indexes +FollowSymLinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/foo$
RewriteRule . /redirect.html [last,redirect=temp]
J'ai essayé de changer ^/foo$
de différentes manières, mais je ne parviens pas à faire fonctionner cela.
Les éléments suivants fonctionnent tous comme prévu:
foo Redirects wherever foo appears, e.g. /abcfoobar
foo$ Redirects whenever foo appears at the end, e.g. /abc/defoo
/foo Redirects whenever /foo appears, e.g. /abc/foobar
/foo$ Redirects whenever /foo appears at the end, e.g. /abc/foo
Ce qui suit revient toujours 404 Introuvable, peu importe ce que je mets comme adresse URI.
^foo
^/foo
^/foo$
Je ne sais pas ce qui se passe.
S'il vous plaît aidez-moi à résoudre ce problème. Si cela peut aider, j'utilise l'hébergement GoDaddy.
Je ne sais pas quel est le problème dans votre cas (j’ai testé votre extrait et il fonctionne comme prévu), mais peut-être que cela fonctionne pour vous:
RewriteEngine On
RewriteRule ^foo$ /redirect.html [redirect=temp,last]
Je ne suis pas un expert en .htaccess, mais je suppose que cela serait même plus rapide, car le modèle RewriteRule
est traité avantRewriteCond
.
Je viens de découvrir la solution! Cela semble être une spéciale de GoDaddy.
Les domaines dans GoDaddy sont conservés dans des sous-dossiers; par exemple. mydomain.com
peut se trouver dans un sous-dossier nommé md
.
Curieusement, le début de %{REQUEST_URI}
inclut cette chaîne. Par conséquent, mon RewriteCond aurait dû se lire:
RewriteCond %{REQUEST_URI} ^/md/foo$
Ce n'est pas nécessaire si la chaîne ne commence pas nécessairement au début. Cela explique mes résultats étranges.
J'ai modifié mon titre pour montrer que cela s'applique spécifiquement à GoDaddy, dans l'espoir que cela aide quelqu'un d'autre.