siv1987

siv1987
Рейтинг
427
Регистрация
02.04.2009

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^id=(\d+)$

RewriteRule ^article\.php$ /%1? [R=301,L]

RewriteRule ^(\d+)$ /article.php?id=$1 [L]

должно работать

GulfstreamG650:
Мне нужно полностью закрыть от индексации сайт для Яху, но открыть страницу с HTML картой сайта и чтобы робот Яху индексировал ссылки только через страницу карты сайта.

Какие ссылки "индексировались" если вы все закрыли от индексации? Что за логика, закрыть весь сайт, чтобы сайт индексировался через карту сайта. Если не хотите, чтобы бот лазил по всем ненужным страницам запретите конкретно их, либо откройте нужные для индексации, например только страницы новостей Allow: /index.php?newsid= карта сайта и чего-то там еще, а все остальное запретите Disallow: /

antyan:
По ссылке, site.ru/catalog/moloko.html я попадаю на страницу с описанием молока, соответственно, если я перейду по ссылке index.php?B=product&id=moloko я попаду на ту же страницу, а мне нужно, если я ввиду:

Имхо, с этого надо было начинать с самого начало.

Еще как вариант

RewriteRule ^catalog/([^/]+/)*(\w+)\.html index.php?B=product&id=$2 [L]

Lion_astana:
^([^/]*)$
чтобы адрес сатьи без слэша, то выходит ошибка 500.

Такие регулярные выражения лучше не юзать, потому что они ничего конкретного не обозначают, и под них многое что может попасть.

Lion_astana:
Список статей - articles.php
Сама статья - article.p

Тогда я ничего не понял, слишком много "я делаю так и не работает, я делают эдак и тоже не работает, а сделать так то не работает то, как сделать чтобы работало так". Напишите конкретные адреса которые нужно реврайтнуть и для которых нужно сделать редирект. И желательно предоставить пару примеров реальных адресов которые используются на сайте.

Lion_astana:
Если я хочу сделать чтобы вид стал без слэша в конце, т.е. site.ru/N и убираю вот тут слэш:

Зачем вам без слеша? Имхо, лучше оставьте с ним. Но по идее должно было сработать.

Lion_astana:

НО! как сделать теперь редирект со старых адресов типа site.ru/articles.php?page=2 на site.ru/pisanina/page/2/, т.е. если где-то стоит ссылка на старый адрес и пользователь по ней перейдет, чтобы его переадресовало на новую страницу.

Весь блок будет выглядеть примерно так

#редирект /article.php => /pisanina

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^$

RewriteRule ^articles\.php$ /pisanina? [R=301,L]

#редирект /article.php?page=1 => /pisanina/page/1/

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^page=(\d+)

RewriteRule ^articles\.php$ /pisanina/page/%1/? [R=301,L]

#реврайты

RewriteRule ^pisanina$ /articles.php [L]

RewriteRule ^pisanina/page/(\d+)/$ /articles.php?page=$1 [L]

Кстати, проверьте имя файла, а то у вас не понятно, то ли это article.php то ли articles.php

Chukcha:

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

..............

1) Редирект будет только со скрипта, который носит имя ^page\.php$, даже если и другие скрипты otherscripts.php юзают одноименные параметры.

2) Правильно, фактически адрес со слешем и без это две разные страницы. И незачем по двум адресам чтобы открывалась одна и та же страница. В данном случае отдается ошибка 404, что в принципе достаточно. Хотите редирект - ставьте редирект.

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^id=(\d+)$

RewriteRule ^page\.php$ /%1/? [R=301,L]

RewriteCond %{QUERY_STRING} ^id=(\d+)$

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteRule ^page\.php$ /%1/ [R=301,L]

добавить перед!

RewriteRule ^([^/]*)/$ /page.php?id=$1 [L]

Прямые ссылки в вконтакте привязаны к IP-адресу. Прикрутить можно разве что так

Всего: 6568