2011-08-11 5 views
2

OK ...Comment rediriger URL vers un autre

J'ai des choses de configuration de sorte que lorsque la page suivante est demandée (les utilisateurs de navigateurs et serveurs)

http://www.visualise.ca/?_escaped_fragment_=corona

le site renvoie le message suivant la le contenu de ce (instantané HTML)

http://www.visualise.ca/corona

Où couronne 'toujours changer, il varie dependin g sur la page demandée par les utilisateurs ou les serveurs. Il pourrait également être

http://www.visualise.ca/?_escaped_fragment_=anne-au-cherry

redirigeant vers

http://www.visualise.ca/anne-au-cherry

Merci

MISE À JOUR: OK laissez-moi être plus clair. J'utilise AJAX pour charger mon article Wordpress et ils apparaissent comme ceci http://www.visualise.ca/#!/corona lorsqu'ils sont chargés. Mais ce n'est pas explorable par Google qui demande de les servir comme http://www.visualise.ca/?_escaped_fragment_=corona alors j'ai modifié Wordpress pour le faire. Maintenant, Google peut explorer ma page et indexer son contenu et accéder à l'instantané HTML disponible au http://www.visualise.ca/corona.

Le problème est que lorsque je colle le lien http://www.visualise.ca/#!/corona à facebook il semble lire le http://www.visualise.ca/?_escaped_fragment_=corona et est incapable de lire le contenu. Mais quand je colle directement le lien http://www.visualise.ca/?_escaped_fragment_=corona cela fonctionne, il lit http://www.visualise.ca/corona (Le HTML).

J'ai donc pensé que si je pouvais rediriger http://www.visualise.ca/?_escaped_fragment_=corona vers http://www.visualise.ca/corona cela résoudrait mon problème.

Voici le fichier .htaccess existant

#--- DH-PHP handlers --- 
AddHandler fastcgi-script fcg fcgi fpl 
AddHandler php-fastcgi .php 
Action php-fastcgi /cgi-bin/dispatch.fcgi 


# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 
+0

On dirait que vous avez tout sous contrôle alors. Y avait-il une question? – Phil

+0

Lorsque je colle http://www.visualise.ca/?_escaped_fragment_=corona sur Facebook, je vois que le contenu de http://www.visualise.ca/corona apparaît dans l'aperçu, mais pas quand je tape http://www.visualise.ca/?_escaped_fragment_=corona dans la barre d'adresse du navigateur et appuyez sur Entrée. – Gab

Répondre

1

L'erreur courante que beaucoup de gens font est d'essayer de faire correspondre l'URL entière, y compris la chaîne de requête. La réalité est la suivante: lors de l'appariement d'URL, le motif est appliqué à la partie chemin de celui-ci et la chaîne de requête doit être appariée séparément.

Utilisez cette règle: il émettra 301 redirection permanente à partir de ce type d'URL /?_escaped_fragment_=corona à /corona (où corona peut être n'importe quoi).

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*) 
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L] 
+0

Merci, il répond à ma question. Mais j'essaie de faire la même chose avec http://visualise.ca/#!/corona et ça ne semble pas fonctionner. RewriteCond% {QUERY_STRING}^#!/([^ &] *) RewriteRule. * Http: //% {HTTP_HOST} /% 1? [R = 301, L] – Gab

+0

@Gab Cela ne fonctionnera pas .. comme hash (identificateur de fragment - tout ce qui suit '#' y compris ce symbole lui-même) est ** côté client SEULEMENT ** et ne jamais être envoyé à un serveur en premier endroit. – LazyOne

0

Je pense que votre question est vraiment « comment puis-je faire ce genre de redirection? ». Donc la réponse est ici:

Il y a trois façons dont je pourrais penser, chacune avec de légères différences.

  1. Faire du côté du serveur de redirection Cela signifie essentiellement que vous définissez redirect les en-têtes dans votre réponse. En PHP, vous pouvez le faire en utilisant la fonction header. Il peut également faire un delayed redirect, auquel cas vous devez vous soucier du contenu de la page.

  2. Le faire en utilisant côté client en utilisant "http-equiv" meta tags html. De cette façon, la page est toujours chargée. Exemple here.

  3. le faire via javascript. Thats vous document.location.href de base. Vous devez trouver un moyen de passer l'argument à javascript, ou demandez à votre JS de le lire à partir de l'adresse URL elle-même.

Depuis que je vous ai montré 3 façons de le faire, je l'espère vraiment que ce que vous cherchez: P


mise à jour après avoir vu les commentaires:

ci-dessus méthodes entraîneront la modification de l'URL. Si vous ne voulez pas que l'URL change, mais affichez le contenu de cette autre page sur votre page d'origine, vous pouvez soit faire cela en utilisant iframes (baaaad), soit faire la bonne chose et mettre en place URLrewriting.

:)

+0

J'ai mis à jour ma question. – Gab

0
RewriteEngine on 
RewriteRule \?_escaped_fragment_=(.*?) /$1 [L,R=301] 

est-ce que vous cherchez?

+0

Je reçois 500 erreur interne du serveur – Gab

+0

J'ai ajouté le fichier .htaccess existant à ma question – Gab

+0

@Gab: édité. désolé – genesis