Странное поведение при добавлении RewriteRule в .htaccess

#php #regex #apache #.htaccess

#php #регулярное выражение #apache #.htaccess

Вопрос:

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

 
  RewriteRule ^(image/[0-9]*/(.*))?$ image.php?prettyUrl=trueamp;nav=$1 [QSA,NC,L]
  

Предполагается, что это заменит

 
  http://mysite.com/image/12345/imagename.png => http://mysite.com/image.php?pretyUrl=trueamp;nav=image/12345/imagename.png
  

Для конкретного случая, когда симпатичный URL содержит ‘/image/’, массив $_GET пуст. Если я использую другое имя, например ‘images’ или ‘asdfg’, массив $ _GET будет содержать как pretyUrl, так и nav.

Есть идеи, почему?

Спасибо!

Комментарии:

1. Опубликуйте какой-нибудь пример URL для вашего конкретного случая /image

2. Это 90-процентная проблема с регулярными выражениями? Слишком плохо, что люди недостаточно знают о регулярных выражениях, чтобы изолировать свои проблемы. Я утешил, специально написал, могу получить точный ответ через 10 секунд. Просто к вашему сведению.

3. Вероятно, это не проблема с регулярным выражением, и в этом случае не добавляйте тег regex в следующий раз. привет

4. Есть ли это правило в .htaccess файле? Если да, то в каком каталоге он расположен?

Ответ №1:

Если правило перезаписи должно работать для каждого URL в image/ , (и /1234/ часть цифр не обязательна), то это может быть тем, что вы ищете:

 RewriteRule ^(image(/.*)?)$ image.php?prettyUrl=trueamp;nav=$1 [QSA,NC,L]
  

Если вы можете сформулировать свой вопрос немного конкретнее, можно найти лучшее решение.