Проблема с .htaccess

Segey
На сайте с 23.08.2005
Offline
404
639

Возникла проблемка, есть два правила:

RewriteRule ^([0-9a-zA-Z_0-9\-]+)/$ category.php?translit=$1

RewriteRule ^soft/([0-9a-zA-Z_0-9\-\(\)]+)/$ soft/category.php?translit=$1

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

Что делать?

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
DI
На сайте с 03.01.2007
Offline
123
#1

нужно для первого правила использовать RewriteCond, синтаксис сходу, к сожалению, не подскажу (забыл уже)

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
Segey
На сайте с 23.08.2005
Offline
404
#2

DenIT,

Т.е. вы говорите, что можно проверить. Примерно "если в урле есть /soft/ то не выполнять"?

Хотелось бы именно прервать, после выполнения второго, если я поставлю его на 1 место.

deleon
На сайте с 16.09.2004
Offline
173
#3

Можно написать так:


RewriteRule ^soft/([0-9a-zA-Z_0-9\-\(\)]+)/$ soft/category.php?translit=$1 [L]
RewriteRule ^([0-9a-zA-Z_0-9\-]+)/$ category.php?translit=$1

Т.е. если первое правило выполняется, то обработка прекращается.

X
На сайте с 05.10.2005
Offline
140
#4

RewriteCond %{REQUEST_URI} ^!/soft/*$

...

Юр. услуги для ООО,ИП,СМИ,товарные знаки, Лицензии связи (хостинг,SMS), авторское право Оффшоры,merchant account,карты
Segey
На сайте с 23.08.2005
Offline
404
#5

deleon,

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

Для себя нашел вариант с созданием в папке /soft/ .htaccess содержания:

RewriteEngine on

Не сильно рылся, но проблема в том, что условие писать и копировать туда неохота - будет больше папкок, будет много условий. А [L] его не останавливает он его рестартит :(

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

deleon
На сайте с 16.09.2004
Offline
173
#6

Значит не совпадает правило. Должно все работать. [L] - предписывает на данном правиле завершить преобразование и больше никаких правил не применять. У меня этот флаг работает как надо.

Segey:
deleon,
Спасибо, но не помогло.

Для себя нашел вариант с созданием в папке /soft/ .htaccess содержания:

Не сильно рылся, но проблема в том, что условие писать и копировать туда неохота - будет больше папкок, будет много условий. А [L] его не останавливает он его рестартит :(

И еще можно подправить ваши правила:


RewriteRule ^([-_0-9a-zA-Z]+)[/]?$ category.php?translit=$1

А вот второе правило я вообще не понял, что за скобки внутри атома?

[0-9a-zA-Z_0-9-()]

Делайте все правила, если это возможно в корневом htaccess, в дальнейшем легче будет разбираться. Кстати, не забыли перед правилами в корневом файле прописать:

RewriteBase /
?

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