301 Перенаправление непосредственно в HTML-файл - PullRequest
3 голосов
/ 01 июня 2009

Я изменил некоторые имена файлов в моей сети, и теперь я хочу, чтобы «301 Permanently Moved» перенаправлял со старых файлов на новые.

Проблема в том, что мой веб полностью сделан с помощью статических html-страниц, и все уроки по перенаправлению 301 описывают, как это сделать в PHP, ASP, htaccess и т. Д. возможный? Или мне нужно связаться с моим веб-провайдером и решить проблему перенаправления на сервере?

Единственное, что я знаю о сервере, это то, что он работает в Windows, и у меня нет знаний о сервере.

РЕДАКТИРОВАТЬ: мой веб-хостинг использует Microsoft IIS 7.0, поэтому я предполагаю, что использование .htaccess здесь невозможно?

РЕДАКТИРОВАТЬ # 2: только что мой администратор сервера написал мне, что даже если я использую только статические HTML-страницы, я все равно могу использовать файл web.config для перенаправления отдельных html-файлов. Это очень мило.

Ответы [ 3 ]

4 голосов
/ 01 июня 2009

Нельзя изменить код состояния HTTP с помощью HTML.

Но если вы используете веб-сервер Apache, вы можете использовать mod_rewrite или mod_alias , чтобы перенаправить такие запросы на новый адрес:

# mod_rewrite
RewriteEngine on
RewriteRule ^old\.html$ /new.html [L,R=301]

# mod_alias
RedirectMatch 301 ^/old\.html$ /new.html

Редактировать Как вы теперь пояснили, что используете IIS 7, взгляните на его элемент <httpRedirect> для перенаправлений HTTP .

3 голосов
/ 01 июня 2009

Нет, это невозможно. HTML не обрабатывается сервером, поэтому он не может устанавливать заголовки HTTP.

Вместо этого вы должны взглянуть на конфигурацию Apache (например, с .htaccess).

В его упрощенном виде вы можете сделать:

  Redirect 301 old.html http://example.com/new/
  Redirect 301 other-old.html http://example.com/newer/
2 голосов
/ 01 июня 2009

Полагаю, вы могли бы использовать JavaScript и / или метаобновление (как предложено Gumbo), чтобы перенаправить пользователей со старых страниц на новые. Что-то вроде:

<html>
<head>
  <meta http-equiv="refresh" content="0;url=http://YourServer/NewFile.html" />

  <script type="text/javascript">
    location.replace('http://YourServer/NewFile.html');
  </script> 
</head>
<body>
  This page has moved. <a href="http://YourServer/NewFile.html">Click here for the new location</a>
</body>
</html>
...