1 (12.05.2013 16:58 отредактировано Devel Fish)

Тема: Mod_Rewrite - пропадают точки перед слешем

Здравствуйте.
Есть правило в файле .htaccess:

RewriteRule ^cat/([^/]+)/([^/]+)(/([^/]+))?/?$ cat/index.php?a=$1&b=$2&c=$4 [QSA,L,NC]

Подстановка работает верно для адресов:

http://site.ru/cat/aaa/bbb/    -> http://site.ru/cat/index.php?a=aaa&b=bbb&c=
http://site.ru/cat/.aaa/bbb.-/ -> http://site.ru/cat/index.php?a=.aaa&b=bbb.-&c=


Проблема есть с адресами вида:

http://site.ru/cat/aaa/bbb./   -> http://site.ru/cat/index.php?a=aaa&b=bbb&c=
http://site.ru/cat/aaa./bbb./  -> http://site.ru/cat/index.php?a=aaa&b=bbb&c=

Не передается символ точка или точки перед слешем, подскажите пожалуйста где ошибка в выражении.

Re: Mod_Rewrite - пропадают точки перед слешем

Devel Fish пишет:

Не передается символ точка или точки перед слешем, подскажите пожалуйста где ошибка в выражении.

Точка обозначает любо символ, если что smile
Поэтому если хочется понимать, что точка это именно точка, а не что-либо иное, то ее необходимо экранировать.
Вот так:

http://site.ru/cat/aaa\./bbb\./

Т.е. необходимо добавить перед точкой обратный слеш. Пробуй!

3

Re: Mod_Rewrite - пропадают точки перед слешем

Выше я написал два примера с точкой которые работают правильно, то есть в файле http://site.ru/cat/index.php
есть переменная $_GET['b'] значение которой "bbb.-", поискал в google но не нашел запрещения писать в url точки.

Re: Mod_Rewrite - пропадают точки перед слешем

Devel Fish пишет:

не нашел запрещения писать в url точки

Это не запрещение. Просто, еще раз повторюсь, точка означает любой символ.

Что касается темы, то я не совсем понял, что во что должно превращаться, параметры в ЧПУ или наоборот?

5

Re: Mod_Rewrite - пропадают точки перед слешем

Подправил первый пост "[/url" убрал.
Превращаться должно ЧПУ в параметры.

Страницы http://site.ru/cat/aaa/bbb/ не существует есть страница http://site.ru/cat/index.php

Re: Mod_Rewrite - пропадают точки перед слешем

Попробуй что-нибудь подобное:

RewriteRule ^(.*)cat/([^/]+)/([^/]+)/$ $1cat/index.php?a=$2&b=$3 [R=301,QSA,L,NC]

А на счет точки, может быть ее нельзя использовать в параметрах? Мало ли, я не в курсе...

7

Re: Mod_Rewrite - пропадают точки перед слешем

Спасибо за ответы буду пробовать, скорее всего откажусь от точки в конце, благо есть возможность.