2015-04-26 3 views
2

Я пытаюсь добавить параметр в свой url через файл .htaccess. У меня есть 5 параметров, 3 int, 1 float (например, 3.5) и строка.htaccess с различными параметрами

С 4 параметрами, без строки, он работает хорошо; но если я попытаюсь добавить пятый параметр, переменная get из этого принимает десятичную часть четвертого параметра (float).

Я не понимаю, почему. Это Htaccess строка с 4 параметрами:

RewriteRule sedi/([0-9]+)/ripetizioni/filtra/([0-9]+)&([0-9]+)&([0-9](.[0-9])?)$ tutor.php?id=$1&p=$2&z=$3&v=$4 [L] 

Вместо этого, когда я добавить пятый параметр, линия становится:

RewriteRule sedi/([0-9]+)/ripetizioni/filtra/([0-9]+)&([0-9]+)&([0-9](.[0-9])?)&([A-Za-z0-9-]+)$ tutor.php?id=$1&p=$2&z=$3&v=$4&search=$5 [L] 

Например, если поиск был «математика» и V был 3.5, то URL принимает правильно, но переменные прибудет поиск занимает .5

+1

Почему вы разбиваете свой поплавок на 2 переменные? – jeroen

+0

@jeroen переменная float не разделяется. Это может быть единственная переменная с необязательной десятичной частью. – hteo

+1

Поскольку вы используете скобки, вы фиксируете значение, если оно есть в пятом параметре. Вы должны использовать не захватывающие скобки или просто '[. \ D]' для всего числа. – jeroen

ответ

2

Использование следующее правило вместо:

RewriteRule sedi/(\d+)/ripetizioni/filtra/(\d+)&(\d+)&([.\d]+)&([a-z\d]+)$ tutor.php?id=$1&p=$2&z=$3&v=$4&search=$5 [NC,L] 

поведение вы испытываете именно по причине, упомянутой в jskindle the other answer.

+0

Я попробую ваше предложение. Спасибо, на данный момент. – hteo

+0

Да, теперь это работает! Благодаря! – hteo

4
RewriteRule sedi/([0-9]+)  - 1 
/ripetizioni/filtra/([0-9]+)& - 2 
([0-9]+)&      - 3 
([0-9](.[0-9])?)&    - 4/5 
([A-Za-z0-9-]+)$    - 6 
tutor.php?id=$1&p=$2&z=$3&v=$4&search=$5 [L] 

Я думаю, неправильное 5-й элемент место. Однако, если вам нужен 5-й элемент с точкой, вам нужно применить: \. (Слэш точки, чтобы избежать символа точки) правила

Edit:

У вас есть 5-ый элемент внутри 4, так что ваш пятый элемент, который вы хотите, шестой, поэтому попробуйте следующее:

([0-9](\.[0-9])?)&    - 4/5 
tutor.php?id=$1&p=$2&z=$3&v=$4&search=$6 [L] 
+0

Я не понимаю, где разница с моим правилом. Четвертый элемент - это одна переменная float. Итак, элемент с точкой - это четвертый, а не пятый. Как правило с косой чертой? – hteo

+0

Ваш метод не работает. У меня такое же поведение ... – hteo

Смежные вопросы