Mod rewrite. Удаление части адреса.

F
На сайте с 03.10.2006
Offline
160
1272

Что-то я никак не могу разобраться с правилом для mod_rewrite. Нужно удалить последний сегмент адреса. Если пользователь переходит по адресу site.com/directory1/directory2/article_id/something я хочу сделать 301-ый редирект на site.com/directory1/directory2/article_id/. Вот правило:

RewriteRule ^directory1/directory2/(.*)/(.*) directory1/directory2/$1/ [R=301,L]

Это правило работает, но если адрес будет такой, то оно работать перестаёт: site.com/directory1/directory2/article_id/something.something. Как я понимаю, проблема в точке. Но как исправить эту проблему я не понимаю. Может подскажет кто-то? Я пробовал разные комбинации этого правила (с слэшем в конце, с $ в конце и т. д., но ничего не работает, когда есть точка в последнем сегменте).

F
На сайте с 03.10.2006
Offline
160
#1

Может кому-то будет интересно. В итоге сделал так:


RewriteRule ^directory1/directory2/(.*)/(.*)/$ directory1/directory2/$1/ [R=301,L]
RewriteRule ^directory1/directory2/(.*)/(.*).(.*)$ directory1/directory2/$1/ [R=301,L]

Теперь всё работает.

siv1987
На сайте с 02.04.2009
Offline
427
#2

Лучше так


RewriteRule ^directory1/directory2/([^/]+)/.+ /directory1/directory2/$1/ [R=301,L]

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