Необходимо установить a RewriteLog
с верхним уровнем RewriteLogLevel
для обеспечения правил обрабатываются, как Вы ожидаете.
Следует иметь в виду это .*?
может привести к пустому соответствию, потому что *
средства 0 или больше. Вы могли бы по крайней мере хотеть использовать +
(таким образом, .+?
), что означает один или несколько.
Anyhoo. Существуют лучшие способы выразить то, что Вы ищете.
Для соответствия до следующей наклонной черты это должно сделать:
RewriteRule ^audio/([^/]+) /audio.php?id=$1
Хотя, если это - числовой идентификатор, можно быть более точными:
RewriteRule ^audio/(\d+) /audio.php?id=$1
Это действительно идет в, зависит от точно, что Вы после делаете. Какой путь передается исходному запросу? Это всегда/audio/some_id/other_stuff? В чем другая конфигурация там для путей с "аудио"? Для запроса формы:
http://www.example.com/audio/some_id/other_stuff
Вы, вероятно, захотите RewriteRule:
ReWriteRule ^/audio/(.*)/.*$ /audio.php?id=$1
Я думаю.*? не делают то, что Вы хотите. Дайте этому водоворот и посмотрите то, что он делает. Можно также найти справочник регулярного выражения Perl полезным.
.*?
. Но для URL как / аудио//, это было бы пустое соответствие между двумя запаздывающими наклонными чертами. – kch 16 August 2009 в 01:36