Перенаправьте 301 с частью хеша (привязка) #

Я думаю, что эта часть кода вносит изменения в контекст.

 Page page = BuildManager.CreateInstanceFromVirtualPath(
                        m_VirtualPath, 
                        typeof(Page)) as Page;// IHttpHandler;

Также эта часть кода бесполезна:

 if (page != null)
 {
     return page;
 }
 return page;

Это будет всегда возвращаться, страница увядают, это является пустым или нет.

21
задан Vadim Kotov 11 August 2017 в 13:50
поделиться

5 ответов

Я вполне уверен, что часть хеша / привязки страницы / закладки URL-адреса не индексируется поисковыми системами и, следовательно, не влияет на рейтинг вашей страницы. Выполнение поиска в Google по запросу "inurl: #" возвращает ноль документов, что подтверждает мое предположение. Ссылки с внешних сайтов будут проиндексированы без хеша.

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

Из-за этого браузер должен правильно управлять хешем во время перенаправления. Firefox 3.5, похоже, делает это успешно. Если вы добавите хеш к URL-адресу с известным перенаправлением, вы увидите изменение URL-адреса в адресной строке на новое место, но хэш остается там успешно.

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

RewriteCond %{HTTP_HOST}   !^exemple\.oursite\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://www.oursite.com/exemple/$1 [L,R]

Если вы не используете Apache, вам придется поискать в документации сервера нечто подобное.

2
ответ дан 29 November 2019 в 21:49
поделиться

Вы можете создать страницу на старом адресе, которая перехватывает все запросы и перенаправляет на новый сайт с правильным адресом и кодом.

Я сделал что-то подобное, но это было на asp.net, и я думаю, это не тот язык, который вы используете.

1
ответ дан 29 November 2019 в 21:49
поделиться

При возврате статуса 301 ваш сервер должен возвращать заголовок "Местоположение:", указывающий на новое местоположение. На практике способы реализации этого варьируются; некоторые серверы предоставляют полный URL-адрес (netloc и путь), некоторые просто предоставляют новый путь и ожидают, что браузер будет искать этот путь в исходном netloc. Похоже, ваше правило перезаписи удаляет путь.

Простой способ увидеть, что такое возвращаемый заголовок Location в оболочке python:

>>> import httplib
>>> conn = httplib.HTTPConnection('exemple.oursite.com')
>>> conn.request('HEAD', '/')
>>> res = conn.getresponse()
>>> print res.getheader('location')

Боюсь, я недостаточно знаю о mod_rewrite, чтобы рассказать вам, как для правильного выполнения правила перезаписи, но это должно дать вам представление о том, что ваш сервер на самом деле говорит клиентам делать.

1
ответ дан 29 November 2019 в 21:49
поделиться

Поисковые роботы не заботятся о хэш-тегах. И если вы используете их для каких-то flash или AJAX-вызовов, у вас есть более серьезные проблемы, чем ваши 301 редиректы не работают. Потому что, если у вас нет контента в альтернативной форме, поисковые системы не будут индексировать ваш сайт, и вы определенно страдаете от SEO.

0
ответ дан 29 November 2019 в 21:49
поделиться

Я зарегистрировал свою учетную запись, поэтому не могу редактировать.

zombat: Мне очень жаль, что я допустил ошибку в своем комментарии. Ссылка на наше видео - example.oursite.com/#video_id=233. В этом случае мое правило перезаписи в Apache не работает.

Ник Берарди: Мы изменили способ работы наших ссылок. Мы больше не используем #, только для обратной совместимости

0
ответ дан 29 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: