Помогите правило составить.

SkiLLer

Гуру форума
Регистрация
22 Авг 2007
Сообщения
306
Реакции
64
На сайте должны быть ссылки /sale/, /sale/moskva/ - это должно передаваться как ?filtr=moskva, но еще может быть такое /sale/page/2/, /sale/moskva/page/2/.

Как сделать, чтобы одно другому не мешало, page,moskva, page - это пагинация, передается ?page=2. На месте moskva может быть что угодно, это будет определятся контентщиками.

З.Ы. Может непонятно объяснил, напишите, постараюсь подробнее описать.
Спасибо.
 
Код:
RewriteEngine on
RewriteBase /

#/sale/
RewriteRule ^sale?$ sale.php [QSA,L]

#/sale/page/2/
RewriteRule ^sale/page/([0-9]+)/?$ sale.php?page=$1 [QSA,L]

#/sale/moskva/page/2/
RewriteRule ^sale/(.*)/page/([0-9]+)/?$ sale.php?filtr=$1&page=$2 [QSA,L]

#/sale/moskva/
RewriteRule ^sale/(.*)/?$ sale.php?filtr=$1 [QSA,L]
сначала sale, потом страницы, потом фильтр и страницы, дальше что не пройдёт попадёт на фильтр

есть некоторые спец символы для апача
Код:
/
=
+
&
#
%
которые используются в ссылках их надо конвертировать если они есть в слове фильтре, например в фильтре слово "avto/moto" с php конвертируем через urlencode будет "avto%2Fmoto" апач когда получит конвертнёт для себя и получит правило /sale/avto/moto/page/2/ и вернёт ошибку 404 страница не найдена, чтоб не было таких проблем надо спец символы конвертировать два раза через urlencode будет "avto%252Fmoto" тогда апач обработает /sale/avto%2Fmoto/page/2/ что попадает под правило, а php автоматически делает urldecode и в $_GET['filtr'] будет значение "avto/moto"
 
Да, еще забыл написать, сорри. sale тоже не уникально, sale тоже будет передаваться гет-запросом(в принципе это реализовано). Можно тут придумать что-то, чтоб не описывать каждый параметр отдельно /sale/,/buy/....?
 
если список слов sale, buy уже известный тогда заменить sale на (sale|buy)
Код:
RewriteRule ^(sale|buy)/?$ $1.php [QSA,L]
если не известно и в словах sale, bay нет символа /
Код:
RewriteEngine on
RewriteBase /htaccess/sale/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#/sale/
RewriteRule ^([^/]+)/?$ $1.php [QSA,L]

#/sale/moskva/page/2/
RewriteRule ^([^/]+)/(.*)/page/([0-9]+)/?$ $1.php?filtr=$2&page=$3 [QSA,L]

#/sale/page/2/
RewriteRule ^([^/]+)/page/([0-9]+)/?$ $1.php?page=$2 [QSA,L]

#/sale/moskva/
RewriteRule ^([^/]+)/(.*)/?$ $1.php?filtr=$2 [QSA,L]
 
Назад
Сверху