2017-10-10 3 views
2

Je redirige toutes les URL de www.example.com/forums à www.example.com/blog/.Exclure une URL de la redirection de dossier

donc je fait cette règle .htaccess:

RewriteRule ^forums blog/$1 [L,R=301] 

la chose est que je veux exclure certaines URL qui commencent aussi avec forums/ et les rediriger vers l'URL particulière autre que /blog. Par exemple, forums/8/some-made-up-word-here-1681 à /studies/some-made-up-studies.

En ce moment, il redirige vers /blog comme toutes les URL commençant par forum/

Répondre

1

Vous avez juste besoin d'inclure les réoriente plus spécifiques en premier lieu, avant que la règle plus générale. Par exemple:

RewriteEngine On 

# Specific redirects 
RewriteRule ^forums/8/some-made-up-word-here-1681 /studies/some-made-up-studies [R,L] 

# Redirect all other URLs that start /forums 
RewriteRule ^forums/?(.*) /blog/$1 [R,L] 

J'ai également modifié votre directive existante pour rediriger /forums/<something> à /blog/<something>, que je suppose était peut-être l'intention initiale, puisque vous utilisiez un $1 backreference la substitution , mais n'a pas eu un groupe de capture dans le modèle RewriteRule. Votre directive d'origine aurait redirigé /forums/<something> vers /blog/.

J'ai également inclus un préfixe de barre oblique sur la substitution . Cela est requis pour les redirections, bien que vous ayez défini RewriteBase à la place, auquel cas vous n'avez pas besoin de le faire.

Vous devrez vider le cache de votre navigateur avant d'effectuer le test, étant donné que le navigateur 301 a été mis en cache par le navigateur. Pour cette raison, il est souvent plus facile de tester avec des 302 temporaires afin d'éviter le problème de mise en cache. Modifiez les redirections temporaires ci-dessus en 301 seulement après avoir confirmé que cela fonctionne comme prévu.

MISE À JOUR: Pour rediriger toutes les URL qui commencent /forums-/blog/, sans copier le reste de l'URL, puis modifiez la dernière directive suit:

# Redirect all other URLs that start /forums 
RewriteRule ^forums /blog/ [R,L] 

Fondamentalement, la $1 dans votre directive initiale était superflu.

+0

Merci, avant d'essayer votre code je tiens à mentionner que je redirige également/forums sans la barre oblique vers /blog/...not seulement/forums/et le suit – Ron

+0

Oui, c'est OK, le motif '^ forums /?(.*) 'correspondra juste à'/forums'. Le '?' Rend la barre oblique précédente facultative. – MrWhite

+0

désolé, mais j'ai besoin de toutes les URL qui suivent les forums/pour rediriger vers/blog/only (pas de suivi) sauf celui que j'ai mentionné. tout de suite avec votre code, tout ce qui suit/forums apporte 404 page parce qu'il transmet à/blog/same-following-content/ – Ron