Apache prend en charge des modules différents pour réécrire/redirect demandé URIs:
- mod_alias avec
Alias
et AliasMatch
de réécriture interne, ainsi que Redirect
et RedirectMatch
pour externe redirigeant
- mod_rewrite avec
RewriteRule
de réécriture interne et externe rediriger
La principale différence entre les mod_alias et Les directives mod_rewrite sont que les directives Alias
et Redirect
de mod_alias fonctionnent avec les modèles de préfixe de chemin tandis que les autres directives (c.-à-d. AliasMatch
, RedirectMatch
et RewriteRule
) fonctionnent avec des expressions régulières. Un modèle de préfixe de chemin est toujours toujours apparié lorsqu'il s'agit d'un préfixe qualifié du chemin demandé et que les segments de chemin restants sont automatiquement ajoutés au chemin cible.Voici un exemple:
Redirect /foo/bar http://other.example/quux
Si /foo/bar
est demandé, il devient redirigé vers http://other.example/quux
; De même /foo/bar/baz
est redirigé vers http://other.example/quux/baz
. Alias
fonctionne mais seulement en interne. En revanche, AliasMatch
, RedirectMatch
et RewriteRule
fonctionnent avec des expressions régulières et peuvent être utilisés non seulement pour correspondre aux préfixes de chemin. Voici un exemple:
RedirectMatch ^/foo/bar$ http://other.example/quux
Si /foo/bar
est demandé, il devient redirigé vers http://other.example/quux
(comme l'exemple ci-dessus Redirect
). Mais si /foo/bar/quux
est demandé, il n'est pas redirigé car ^/foo/bar$
ne correspond pas /foo/bar/quux
.
D'autres différences entre mod_alias et mod_rewrite sont que mod_rewrite peut également examiner d'autres parties de l'URI à l'exception du chemin et même des champs d'en-tête de requête HTTP. Cela permet également des opérations plus complexes avec plusieurs conditions.
+1 avec la note que si ceux-ci sont permanents, assurez-vous d'utiliser 301, 'Redirection 301 /index.html http: // example.com/location /' –
Merci cela semble que cela devrait fonctionner, mais ce n'est pas rediriger. C'est à quoi ressemble mon htaccess. Je reçois aucune erreur et aucune page de redirection # BEGIN WordPress RewriteEngine On RewriteBase/ RewriteRule^index \ .php $ - [L] RewriteCond% {} de REQUEST_FILENAME -f RewriteCond% { REQUEST_FILENAME}! -d RewriteRule. index.php [L] RewriteEngine On // 301 Redirect ancien fichier Redirect 301 article.php histoire = 3432442 Blog-post.php –
Michael