Redirect
correspond aux préfixes de chemin. Les Redirect
matchs après tout chemin qui est le préfixe (segment de chemin sage) est /here
et l'ajoute à la nouvelle URI:
Redirect 301 /here http://example.com
Ainsi, toute demande que son chemin commence par /here
seront redirigés vers http://example.com
Wile annexant tous les suffixes chemin suivants de /here
à http://example.com
. Contrairement à cela, RewriteRule
fonctionne avec des expressions régulières. Dans ce cas, les éléments suivants RewriteRule
correspond à tout chemin qui contient here/
:
RewriteRule here/(.*) http://example.com/$1 [R=301,L]
Tout après here/
sera alors ajouté à la nouvelle URL.
Alors que les deux directives auraient le même effet lors de la demande d'URL avec des chemins commençant par /here
, ce dernier correspondra également à toute requête dont le chemin contient uniquement here/
comme /not/here/foo
.
De plus, vous ne pouvez utiliser des conditions supplémentaires avec mod_rewrite:
RewriteCond $0 !=here/stayhere.html
RewriteRule ^here(/.*)?$ http://example.com$0 [L,R=301]
Si vous voulez faire la même chose avec mod_alias, vous devrez utiliser RedirectMatch
avec une expression régulière qui correspondre à quelque chose, mais /here/stayhere.html
.
Êtes-vous sûr que cela n'a rien à voir avec regex? – Keng
Oui ... idealmachine ci-dessous dit qu'il utilise regex. N'est-ce pas comme ça que tout est égalé? – gravityboy
Et Gumbo dit qu'il utilise "expression régulière" – gravityboy