J'ai un certain nombre de liens avec une structure similaire:
example.com/index.php/path/some-path/some-subpath?parameter=1
Ce que je veux rediriger juste à example.com/category/
Mais je veux faire correspondre uniquement le chemin URL, c'est-à-dire. /index.php/path/some-path/some-subpath
, car le paramètre de requête n'est pas pertinent.
J'ai essayé la règle suivante:
RewriteRule ^/index.php/path/some-path/some-subpath?parameter=\dd\? /category/ [L,R=301]
Si la chaîne de requête n'est pas pertinente, elle peut simplement être ignorée. (De toute façon, vous ne pouvez pas faire correspondre la chaîne de requête à la directive RewriteRule
.)
Essayez ce qui suit dans votre fichier .htaccess racine pour rediriger la requête:
RewriteEngine On
RewriteRule ^index.php/path/some-path/some-subpath$ /category/? [L,R=301]
Dans les fichiers .htaccess par répertoire, le chemin d'URL correspondant à RewriteRule
modèle a le préfixe de répertoire supprimé. En d'autres termes, il ne commence pas par une barre oblique, ^index.php....
au lieu de ^/index.php....
.
Le ?
à la fin de la substitution RewriteRule
est requis pour supprimer la chaîne de requête (le cas échéant) de la demande. Sinon, parameter=1
sera transmis et ajouté à l'URL cible.
Cela correspondra à n'importe lequel chaîne de requête, y compris une chaîne vide.
Répondre par @MrWhite n'a pas fonctionné pour moi. Voici ce qui fonctionne avec mon site Wordpress.
Exemple:
OLD URL: http://website.com/xxx/yyy/picture.png
NEW URL: http://website.com/wp-content/picture.png
Donc, je veux remplacer / xxx/yyy / par le chemin normal / wp-content / de WordPress.
Mettez ceci dans votre fichier .htaccess.
RewriteEngine on
RedirectMatch 301 /xxx/yyy/(.*) http://website.com/wp-content/$1