Apache Redirection 301 échoue lors de l'utilisation des paramètres, tels que ?bla=
J'ai construit une nouvelle version de PHP site pour un client et que vous souhaitez rediriger le haut de classement des résultats de Google à partir de l'ancienne structure du site vers le nouveau.
J'ai mis plusieurs dizaines de Redirection 301 dans un .htaccess dans la racine de votre serveur, et même si certains fonctionnent très bien, je vais avoir des problèmes avec un tas d'autres.
Cela fonctionne bien:
Redirect 301 /nl/flash/banner_new.swf http://www.example.com/actueel/nieuws.html?action=show&f_id=152
Cela ne fonctionne pas! (conduisant à une 404 depuis la redirection est tout simplement ignorée):
Redirect 301 /nl/index.php?mID=24511&subID=0 http://www.example.com/solutions/printsolutions.html
Redirect 301 /nl/index.php?mID=24512&subID=0 http://www.example.com/support/koppeling-met-omgeving.html
Les redirections sont mélangés dans le .fichier htaccess, et seuls les redirections avec des paramètres GET semblent échouer.
Est-il une solution? Ignorant la faute de la redirection n'est pas une option pour le client. Merci pour vos pensées.
Vous devez vous connecter pour publier un commentaire.
Tout Gumbo la réponse de l' raisonnement était correct, je ne pouvais pas obtenir son RewriteRule au travail.
L'ajout d'un autre RewriteCond fait. Ce qui suit a été testé et fonctionne très bien.
RewriteRule
dépend de si elle est utilisée dans la configuration du serveur ou dans un .fichier htaccess et où la .fichier htaccess est situé.Redirect
ne fonctionne uniquement sur les chemins d'URL:Donc l'URL de la requête (la partie après le premier
?
jusqu'à la première#
après) n'est pas vérifiée.Mais vous pouvez utiliser mod_rewrite à faire:
D'accord avec les deux Gumbo et Martijn de réponses ... mais:
Faute de frappe dans Martijn, il doit être "^" pour démarrer l'expression régulière pour le REQUEST_URI condition:
Moi aussi, je ne pouvait obtenir de Martijn, pas Gumbo est, de travail, où mon .fichier htaccess a été.
Aussi, si vous ne voulez pas le paramètre de chaîne pour être transmise avec la réécriture, vous devez ajouter un "?" à la fin de l'URL:
Sinon, à la suite de Martijn du code, on lit: "si votre URL est /nl/index.le php?mi=24511&subID=0 alors rediriger vers http://www.example.com/solutions/printsolutions.html?mID=24511&subID=0 avec une redirection Permanente 301-tête et de ne pas traiter plus de règles sur cette URL"
Cela peut ou peut ne pas être ce que vous voulez, et pour être juste comme une règle générale que si les paramètres ne sont pas compris, ils seront tout simplement ignorés sans leur faire du mal, alors il ne sera probablement pas d'importance. Toutefois, si vous êtes désireux de rediriger un homme à une nouvelle page et souhaitez Url "vitrine", puis dépouiller de la chaîne de paramètre est préférable, afin de coller le "?" à la fin de l'URL de destination.