значение кода 410 – урл навсегда удалён с сервера,
значение кода 301 – старый урл навсегда перемещён на новый урл,
в 1 и 2 вариантах редиректов происходить не будет, например, на запрос http://host.com/?cat=12 сервер выдаст в хедер код ошибки 410 и покажет содержимое страницы, прописанной в ErrorDocument 410 /404.html , но в строке браузера урл будет такого вида http://host.com/?cat=12
в 3 и 4 вариантах произойдёт редирект на морду, т.е. при запросе http://host.com/?cat=12 откроется http://host.com/
в этой задаче самое главное передать поисковикам необходимые коды, а редиректить на 404.html не надо, потому что на 404.html сервер отдаст код 200, получится, что все старые страницы переехали на новый урл 404.html
только что проверил, не передаётся 301 в хедер,
нужно заменить строку
@header("Status: 301 Moved Permanently");
на следующую:
header("HTTP/1.1 301 Moved Permanently");
или
header("HTTP/1.1 301");
конечно склеит, нет различия в способах инициации редиректа (.htaccess или скрипт),
бот или браузер в обоих случаях получат ответ сервера с заголовками, типа,
HTTP/1.x 301 Moved Permanently
Date: Wed, 12 Aug 2009 14:15:04 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
Location: http://host.com/
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251
зацикливание происходит, с index.php на index.php, лучше сделать редирект вот так:
нужно прописать в index.php в самом начале файла, можно сразу после <?php
/ru/forum/comment/4877769
1) в этом варианте сервер выдаст в хедер код 410 на любые GET запросы
2) в этом варианте сервер выдаст в хедер код 410 только на GET запросы /?cat= и /?p=
3) в этом варианте любые GET запросы средиректятся на главную, сервер выдаст в хедер код 301
4) в этом варианте средиректятся только GET запросы /?cat= и /?p=, сервер выдаст в хедер код 301
значение кода 410 – урл навсегда удалён с сервера,
значение кода 301 – старый урл навсегда перемещён на новый урл,
в 1 и 2 вариантах редиректов происходить не будет, например, на запрос http://host.com/?cat=12 сервер выдаст в хедер код ошибки 410 и покажет содержимое страницы, прописанной в ErrorDocument 410 /404.html , но в строке браузера урл будет такого вида http://host.com/?cat=12
в 3 и 4 вариантах произойдёт редирект на морду, т.е. при запросе http://host.com/?cat=12 откроется http://host.com/
в этой задаче самое главное передать поисковикам необходимые коды, а редиректить на 404.html не надо, потому что на 404.html сервер отдаст код 200, получится, что все старые страницы переехали на новый урл 404.html
возможное решение, в IE 6 и FF 3 страница редиректится из фрейма на свой урл, в Опере не работает
проверено при таком коде:
<script language="javascript" type="text/javascript">
top.frames=null;self = null;parent = null;top = null;self.ifra.parent = null;
</script>
<iframe src="http://host.com/" width="900" height="600"></iframe>
ещё вариант, в хедере 301
спасибо за иное решение, работает, 301-й добавил и путь от корня:
да не работает, даже со слешем, :)
или у кого-то работает на практике эта строка?
RewriteRule page1.php\?v=(.*) page2.php?v=$1 [L]