Проблема переписывания модов

Я пытаюсь перенаправить свои страницы, используя URL:

RewriteRule ^(.*)/content/(.*)/?(.*)\.html$ browse.php?s=$1&c=$2&l=$3 [NC,L]

Для 2 параметров это работает нормально, но когда я передаю 3 параметра, он объединяет 2 и третий.

Правильный вывод имеет следующие (2) параметры:

Array ( [s] => wallpapers [c] => Global_Celebrities [l] => Nicole1);

Объединенный перепутанный вывод имеет здесь (3) параметры:

Array ( [s] => wallpapers [c] => Global_Celebrities/Kate1 [l] =>);

Заранее спасибо.

2 ответа

Решение

Вам нужно использовать более конкретный шаблон. Пытаться [^/]+ вместо .*:

RewriteRule ^([^/]+)/content/([^/]+)\.html$ browse.php?s=$1&c=$2 [NC,L]
RewriteRule ^([^/]+)/content/([^/]+)/([^/]+)\.html$ browse.php?s=$1&c=$2&l=$3 [NC,L]

Самый простой способ - пойти по двум правилам:

RewriteRule ^(.*)/content/(\w*)\.html$ browse.php?s=$1&c=$2 [NC,L]<br/>
RewriteRule ^(.*)/content/(\w*)/(\w*)\.html$ browse.php?s=$1&c=$2&l=$3 [NC,L]

Обратите внимание, что я использую "\w" вместо ".", Так что "." не сможет есть "/". Это может работать с. тоже безопаснее с \w.

Другие вопросы по тегам