Проблема переписывания модов
Я пытаюсь перенаправить свои страницы, используя 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.