Подскажите с mod_rewrite

М
На сайте с 08.09.2006
Offline
223
475

Всем привет.

Буду признателен если подскажите, что прописать в .htaccess, чтобы избавиться от "левых" добавлений в адресах, то есть сделать 301 редиректы с

_http://nameofsite/url1.html?cid=1 -> _http://nameofsite/url1.html

_http://nameofsite/url2.html?cid=5 -> _http://nameofsite/url2.html

_http://nameofsite/url3.html?cid=10 -> _http://nameofsite/url3.html

То есть убрать ?cid=xx из адресов страниц, чтобы эти части просто отбрасывались, а при обращение к такому адресу шел 301 редирект на нормальный адрес.

Можно так сделать?

Не бойся неизбежного... Уже не продаю авто морды...
dma84
На сайте с 21.04.2009
Offline
168
#1

Если требуется просто отбросить QUERY_STRING, то так:

RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ $1? [L,R=301]
М
На сайте с 08.09.2006
Offline
223
#2
dma84:
Если требуется просто отбросить QUERY_STRING, то так:
RewriteCond %{QUERY_STRING} ^(.+) [NC]

RewriteRule ^(.*)$ $1? [L,R=301]

Происходит переадресация на физическую директорию сайта, то есть на

что то вроде

http://sitename.ru/home/maestro/data/www/sitename.ru/url1.html

вместо:

http://www.sitename.ru/url1.html

Маэстро добавил 01.03.2011 в 07:23

А всё заработало, было закоментировано

# RewriteBase /

Спасибо, большое

Маэстро добавил 01.03.2011 в 10:04

При эксплуатации с данной записью в htaccess обнаружилось, что не работает ссылки в админке, а так же не отображаются картинки к товарам в интернет магазине.

Может где то что-то не так прописано?

Маэстро добавил 01.03.2011 в 10:26

Как я понимаю, при таком коде, откидывается всё что находится после знака "?" поэтому некоторые функции на сайте перестали работать.

Можно ли сделать так, чтобы откидывалась только эта часть ?cid=xx , где xx произвольный номер.

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

Очевидно у Вас все-таки нельзя полностью избавляться от праметров в URL.

Попробуйте так:


RewriteCond %{QUERY_STRING} ^(.*)cid=[0-9]+(.*)$ [NC]
RewriteRule ^(.*)$ $1?%1%2 [L,R=301]

Будет выполняться редирект, если в параметрах есть "cid=цифры" (с удалением только этого параметра).

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
М
На сайте с 08.09.2006
Offline
223
#4
gormarket:
Очевидно у Вас все-таки нельзя полностью избавляться от праметров в URL.
Попробуйте так:

RewriteCond %{QUERY_STRING} ^(.*)cid=[0-9]+(.*)$ [NC]
RewriteRule ^(.*)$ $1?%1%2 [L,R=301]

Будет выполняться редирект, если в параметрах есть "cid=цифры" (с удалением только этого параметра).

Спасибо большое, помогло.

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