Помогите с редиректом в htaccess

antono
На сайте с 12.07.2004
Offline
286
918

Нужно сделать так, чтобы если URL набирали без слеша в конце так:

www.site.ru/folder

редиректился через modrewrite на тот же URL, только со слешем в конце:

www.site.ru/folder/

BadBoy
На сайте с 31.01.2005
Offline
291
#1

А разве автоматически не закрывается?

У меня работает, какой бы урл (существующий) не набрал.

А так вот http://www.wmaster.ru/htaccess/ много чего интересного

antono
На сайте с 12.07.2004
Offline
286
#2

Автоматически не закрывается.

В яндексе тоже работает:

http://yaca.yandex.ru/yca/cat/Business/

http://yaca.yandex.ru/yca/cat/Business

А у меня нет, т.к. в условиях modrewrite у меня не предусмотрены урлы без слэша на конце. Нужно сделать редирект.

R
На сайте с 04.11.2005
Offline
112
#3

да тут, в принципе, зависит от текущих настроек htaccess и двжика в целом, а так алгоритм прост:

RewriteRule ^(.+[^/])$ $1/ [R]

т.е. если слэша нет в конце - редирект на урл со слэшем.

ps при необходимости наверное желательно перед этим поставить еще RewriteCond %{REQUEST_FILENAME} -d

но опять же, все зависит от индивидуальных условий/настроек

DmitryTs
На сайте с 26.01.2007
Offline
29
#4

RewriteRule ^([_\'A-Za-z0-9-]+[^/])?$ $1/ [L]

Вот шпаргалочка.. распечатай и всегда имей при себе..http://www.ilovejackdaniels.com/mod_rewrite_cheat_sheet.pdf

R
На сайте с 04.11.2005
Offline
112
#5

DmitryTs,

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

antono
На сайте с 12.07.2004
Offline
286
#6
robust:
да тут, в принципе, зависит от текущих настроек htaccess и двжика в целом, а так алгоритм прост:

RewriteRule ^(.+[^/])$ $1/ [R]
т.е. если слэша нет в конце - редирект на урл со слэшем.

ps при необходимости наверное желательно перед этим поставить еще RewriteCond %{REQUEST_FILENAME} -d

но опять же, все зависит от индивидуальных условий/настроек

Если поставить RewriteRule ^(.+[^/])$ $1/ [R], то страница не открывается, а включается какой-то бесконечный цикл, редиректит туда-сюда. Может с моими настройками как-то конфликтует. Если добавить RewriteCond, то становится как прежде, как будто и нет этих условий. :(

R
На сайте с 04.11.2005
Offline
112
#7

antono, почитай наконец руководство по mod_rewrite

или выложи полностью свой текущий .htaccess (хоть в личку). ничего не обещаю, но попробую помочь

DoTJ
На сайте с 09.10.2005
Offline
33
#8

antono, вот тут, в руководстве по УРЛ преобразованиям, есть пункт "Проблема отсутствующего завершающего слэша" http://www.linuxshop.ru/lib/apache/urlpr.htm

Вот, что они предлагают:


RewriteEngine on
RewriteBase /
RewriteRule ^foo$ foo/ [R]

либо:


RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]

Вот описание модуля mod_rewrite: http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html

Всегда нужны места под статьи Также куплю ссылки с Ваших ресурсов с постоянным размещением
R
На сайте с 04.11.2005
Offline
112
#9

DoTJ, я уже предлагал второй способ. зачем его еще раз писать?

повторю, не зная, что там уже есть в .htaccess можно намутить такого... зациклить правила, или их отменить

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