htaccess

12
moonvader
На сайте с 11.10.2011
Offline
10
1016

почему может не работать

команда в htaccess вида

redirect /page.php?page_id=6 http://yandex.ru/

при этом

redirect /index.html http://yandex.ru/

работает

iren K
На сайте с 28.12.2008
Offline
222
#1

в Вашем случае попробуйте использовать директиву RedirectMatch..

c уважением Iren
moonvader
На сайте с 11.10.2011
Offline
10
#2

ну вот

RedirectMatch /page.php?page_id=6 http://www.yandex.ru/ - не работает

RedirectMatch /index.html http://www.yandex.ru/ - работает

может что-то не так с синтаксисом в /page.php?page_id=6 - может туда какие-нибудь слеши или ещё чего?

при этом дело явно в знаке вопроса, ибо

RedirectMatch /page.phppage_id=6 http://www.yandex.ru/ - работает

как вопросительный знак отэкранировать?

MALCHUN
На сайте с 01.05.2009
Offline
71
#3

а что нужно прописать что бы со всех несушествующих страниц редиректило на главную

Хуже ссылочной биржи (http://www.linkfeed.ru/reg/59860) Я не видел :)
moonvader
На сайте с 11.10.2011
Offline
10
#4

MALCHUN

ErrorDocument 404 /

слушайте, ну как поступить то??

есть CMS, страницы выглядят как site.ru/page.php?page_id=6

для страниц сделаны чпу вида site.ru/page_1.html

это сделано реврайтом

ссылки из вне ссылаются на сайт через page.php?page_id=6, как редирект то сделать

напишите, пож-та пример, рабочий

moonvader добавил 18.10.2011 в 09:43

имеет ли смысл делать через

rel="canonical"

на страницы с ЧПУ?

gormarket
На сайте с 29.12.2010
Offline
47
#5

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


RewriteCond %{QUERY_STRING} page_id=6
RewriteRule ^page\.php$ http://%{HTTP_HOST}/page_1.html? [R=301,L]
Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
moonvader
На сайте с 11.10.2011
Offline
10
#6

а ЧПУ на красивые ссылки по-вашему как сделаны?

именно так

RewriteRule ^page_1\.html page.php?page_id=6 [L]

1 - возможен ли реврайт с А на Б и с Б на А одновременно?

2 - весь вопрос в передаче веса ссылок на одну страницу

при редиректе это случится, а при реврайте разве происходит такая передача?

gormarket
На сайте с 29.12.2010
Offline
47
#7

У Вас реврайт с "page_1.html" на "page.php?page_id=6"

здесь о предаче веса говорить бессмысленно, поскольку реврайта никто не увидит, для всех будет видна только страница "page_1.html" и на ней отдается содержимое "page.php?page_id=6"

А с "page.php?page_id=6" на "page_1.html" это уже редирект.

Если в сети есть ссылка на "page.php?page_id=6" то при переходе по ней посетитель будет отправлен на адрес "page_1.html" (с передачей веса ссылки "page.php?page_id=6" на "page_1.html")

А чтобы тот редирект, что я предложил выше не вызывал зацикливание совместно с Вашим реврайтом, добавьте еще одно условие к этому правилу:


RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} page_id=6
RewriteRule ^page\.php$ http://%{HTTP_HOST}/page_1.html? [R=301,L]
moonvader
На сайте с 11.10.2011
Offline
10
#8

а где редирект??

я вижу только реврайты

gormarket
На сайте с 29.12.2010
Offline
47
#9
moonvader:
а где редирект??
я вижу только реврайты

Если стоит флаг R, то это запускает внешний редирект (перенаправление).


[R=301,L]
moonvader
На сайте с 11.10.2011
Offline
10
#10

огромное спасибо, это работает!

но я правильно понимаю, что для каждой страницы

  • page_1.html
  • page_2.html
  • .........
  • .........
  • page_N.html

для которых было

  • RewriteRule ^page_1\.html page.php?page_id=1 [L]
  • RewriteRule ^page_2\.html page.php?page_id=2 [L]
  • ......................
  • ......................
  • RewriteRule ^page_N\.html page.php?page_id=N [L]

теперь нужно в htacces дописать по 3 строчки на каждую (то есть дописать 3*N строк)

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} page_id=1
RewriteRule ^page\.php$ http://%{HTTP_HOST}/page_1.html? [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} page_id=2
RewriteRule ^page\.php$ http://%{HTTP_HOST}/page_2.html? [R=301,L]
...................................
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} page_id=N
RewriteRule ^page\.php$ http://%{HTTP_HOST}/page_N.html? [R=301,L]
12

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