Дайте htaccess для html сайта, а то грустно очень

basilic
На сайте с 16.05.2008
Offline
369
5713

Продолжение...

Недавно создавал подобный топик и обрисовал задачу, но задачу я обрисовал неверно и получил неверный резалт (ребята-то ответили тогда правильно) :(

Стоял WP с урлами вида

domain.com/*.php

domain.com/?param

с первым видом урла справляется ErrorDocument 404 /404.html в .htaccess и успешно

с параметрическим думал поможет то что ниже, однако не помогает, так как роботы под этот урл индексят морду сайта

RewriteEngine On
RewriteCond %{THE_REQUEST} "^GET \/\?.*"
RewriteRule ^(.*)$ /? [R]

как мне на 404.html параметрич урлы средиректить?

Спасибо.

[Удален]
#1

Так ведь ErrorDocument 404 открывает страницу 404.html с параметрами если нет попробуйте сделать 404.php у меня работает так:

ErrorDocument 404 /404.php

К примеру мойсайт.ru/holobuda.php?param=5 открывает страницу 404.php c параметрами

а на 404 странице скрипт считывания параметров $_SERVER['REQUIEST_URI']

xpert13
На сайте с 15.09.2008
Offline
127
#2

Вот похожая проблема: /ru/forum/354501

Думаю ответ Вам подойдёт, только нужно будет $0? заменить на /404.html

basilic
На сайте с 16.05.2008
Offline
369
#3
xpert13:
Вот похожая проблема: /ru/forum/354501
Думаю ответ Вам подойдёт, только нужно будет $0? заменить на /404.html

Заменил на


RewriteBase /
RewriteCond %{QUERY_STRING}.+
RewriteRule ^(.*) /404.html [R]

ErrorDocument 404 /404.html

Открывает страницу с параметром :(

M
На сайте с 17.04.2008
Offline
88
MBo
#4

1) в этом варианте сервер выдаст в хедер код 410 на любые GET запросы


RewriteEngine on
RewriteRule ^.htaccess$ - [F]
RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*) /? [G,L]
ErrorDocument 410 /404.html

2) в этом варианте сервер выдаст в хедер код 410 только на GET запросы /?cat= и /?p=


RewriteEngine on
RewriteRule ^.htaccess$ - [F]
RewriteCond %{QUERY_STRING} (cat|p)=(.*)$
RewriteRule ^(.*) /? [G,L]
ErrorDocument 410 /404.html

3) в этом варианте любые GET запросы средиректятся на главную, сервер выдаст в хедер код 301


RewriteEngine on
RewriteRule ^.htaccess$ - [F]
RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*) /? [R=301,L]

4) в этом варианте средиректятся только GET запросы /?cat= и /?p=, сервер выдаст в хедер код 301


RewriteEngine on
RewriteRule ^.htaccess$ - [F]
RewriteCond %{QUERY_STRING} (cat|p)=(.*)$
RewriteRule ^(.*) /? [R=301,L]

значение кода 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

basilic
На сайте с 16.05.2008
Offline
369
#5

До чего же правильное замечание!

в этой задаче самое главное передать поисковикам необходимые коды, а редиректить на 404.html не надо, потому что на 404.html сервер отдаст код 200, получится, что все старые страницы переехали на новый урл 404.html

А учиться уже поздно или рано :)

Спасибо еще раз!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий