Htaccess перенаправляет страницу с строкой запроса, размещенной на временном IP-адресе?

У меня есть сайт, который был временно настроен как 111.222.333.444/~mysite, потому что реальный URL-адрес не был готов. 111.222.333.444/~mysite/?page_id=123 была действительной страницей на этом сайте. Мой сайт сейчас в прямом эфире. Я больше не хочу или не хочу использовать 111.222.333.444/~mysite для доступа к сайту.

Однако Google индексировал поиск термина на странице ?page_id=123 как 111.222.333.444/~mysite/?page_id=123. Но ?page_id=123 больше не существует. Теперь он находится на новой странице, и я хочу перенаправить ссылку Google на www.example.com/newpage

Ближайшим я пришел к реализации этого перенаправления:

RewriteCond %{HTTP_HOST}  ^111\222\.333\.444$ [NC]
RewriteCond %{QUERY_STRING}  ^\?page_id=123$ [NC]
RewriteRule ^~mysite/$ //www.example.com/newpage [R=301,NE,NC,L]

Но это не работает и дает мне внутреннюю ошибку сервера.

Я также пробовал:

Redirect 301 /?page_id=195 /newpage

Но это не имело никакого эффекта. Может ли кто-нибудь предложить, как это сделать? У меня нет проблем с перенаправлением отдельных страниц, но временный /альтернативный URL-адрес с IP-адресом бросает меня.

3 голоса | спросил colic 23 AM00000040000005131 2016, 04:00:51

1 ответ


2

mod_alias documenation заявляет в верхнем разделе, что он не " t поддерживает переадресацию на основе строк запроса. Вы не сможете получить правило Redirect 301.

Я вижу пару проблем с вашим правилом перезаписи:

  1. Вам не хватает периода (.) в правиле вашего IP-адреса.
  2. Вопросительный знак (?) не включен в строку запроса, поэтому \? не должно быть частью вашего правила QUERY_STRING.
  3. mod_rewrite не поддерживает относительные URL-адреса переадресации. Ваш новый URL-адрес не может начинаться с //. Вам нужно запустить его с помощью http:// или https:// , если вы не сделаете кучу фантазии hocus pocus .

Также:

  • Я не думаю, что вам нужен флаг no ([NC]), поэтому я бы опустил его.
  • Я не думаю, что вам нужен флаг escape ([NE]), поэтому я бы опустил его.
  • Если ваш новый сайт не использует строку запроса page_id=123 вообще, вы можете удалить требование о том, чтобы оно было включено IP-адрес.
  • Аналогично, я бы опустил часть правила ~mysite. Просто введите перенаправление в строку запроса, а не в папку, в которой она находится.

Я бы попробовал это правило:

RewriteCond %{QUERY_STRING}  ^page_id=123$
RewriteRule (.*)  http://www.example.com/newpage?  [R=301,L]
ответил Stephen Ostermiller 23 AM000000110000001331 2016, 11:25:13

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132