Как перенаправить URL на другой - PullRequest
2 голосов
/ 11 августа 2011

ОК ...

Я настроил так, чтобы при запросе следующей страницы (пользователи и серверы браузера)

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

веб-сайт возвращалследуя содержанию этого (снимок HTML)

http://www.visualise.ca/corona

Где «корона» всегда меняется, она зависит от страницы, которую запрашивают пользователи или серверы.Это также может быть

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

с перенаправлением на

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

Спасибо

ОБНОВЛЕНИЕ: Хорошо, позвольте мне быть более ясным.Я использую AJAX для загрузки своего поста Wordpress, и они выглядят как http://www.visualise.ca/#!/corona при загрузке.Но Google не может обработать их как http://www.visualise.ca/?_escaped_fragment_=corona, поэтому я изменил Wordpress для этого.Теперь Google может сканировать мою страницу и индексировать ее содержимое и получать доступ к снимку HTML, доступному по адресу http://www.visualise.ca/corona.

. Проблема в том, что когда я вставляю ссылку http://www.visualise.ca/#!/corona в Facebook, она, кажется, читает http://www.visualise.ca/?_escaped_fragment_=corona и не может прочитать содержимое.Но когда я вставляю непосредственно ссылку http://www.visualise.ca/?_escaped_fragment_=corona, она работает, она читает http://www.visualise.ca/corona (HTML).

Так что я подумал, может быть, если бы я мог перенаправить http://www.visualise.ca/?_escaped_fragment_=corona вhttp://www.visualise.ca/corona это решило бы мою проблему.

Вот существующий файл .htaccess

#--- 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

Ответы [ 3 ]

1 голос
/ 11 августа 2011

Распространенная ошибка, которую делают многие люди, - это попытка сопоставить весь URL, включая строку запроса.Реальность такова: при сопоставлении URL-адреса шаблон применяется к его части пути, и строка запроса должна сопоставляться отдельно .

Используйте это правило: из этого будет выдано 301 постоянное перенаправлениевид URL /?_escaped_fragment_=corona до /corona (где corona может быть любым).

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*)
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L]
0 голосов
/ 11 августа 2011
RewriteEngine on
RewriteRule \?_escaped_fragment_=(.*?) /$1 [L,R=301]

это то, что вы ищете?

0 голосов
/ 11 августа 2011

Полагаю, ваш вопрос действительно "как мне сделать такое перенаправление?" Так что ответ здесь:

Я мог бы подумать о трех способах, каждый с небольшими отличиями.

  1. Выполнение перенаправления на стороне сервера Это в основном означает, что вы устанавливаете заголовки перенаправления в своем ответе. В php это можно сделать с помощью функции header . Он также может выполнить отложенное перенаправление , в этом случае вам нужно беспокоиться о содержимом страницы.

  2. Выполнение с использованием клиентской стороны с использованием html мета-тегов http-эквивалент . Таким образом, страница всегда загружается. Пример здесь .

  3. делает это с помощью JavaScript. Это базовая вещь document.location.href. Вам нужно найти способ передать аргумент в javascript или сделать так, чтобы ваш JS считал его с адреса URL.

Поскольку я показал вам 3 способа сделать это, я очень надеюсь, что это то, что вы ищете: P


Обновление после просмотра комментариев:

Вышеуказанные методы приведут к изменению URL. Если вы не хотите, чтобы URL-адрес изменялся, а отображали содержимое этой другой страницы на своей исходной странице, вы можете сделать это, используя iframes (baaaad), или сделать приличную вещь и настроить URL перезапись .

:)

...