.htaccess переписывают не получение корректного URL

  • Управление версиями. Смогите генерировать, считать и применить патчи. Знайте, как использовать систему управления версиями, которая представляет репозиторий широкие версии и почему Вы хотите тот. Знайте, как записать описательные журналы изменений и почему Вы хотите их. Знайте, как искать журналы репозитория ключевые слова и периоды времени.
  • Сценарии. Сделайте что-то однажды и быть на пути. Сделайте это дважды или больше, сделайте это, после того как затем пишут сценарий.
  • Отладка. Знайте, как считать отслеживание стека и как сообщить о соответствующих ошибках Вашему контакту программной поддержки. Нахождение ошибки хорошо и полезно, но знающий, как зафиксировать его, может взять много инвестиций в чтение кода. Внесите свой вклад это легко для Вас, и позвольте им внести свой вклад, это легко для них.
  • Тестирование. Монитор непрерывно и ошибки журнала. Используемый в сочетании с управлением версиями и тестированием, у Вас есть сильная идея того, что, возможно, пошло не так, как надо, когда и что переехало затем. Контролируйте и производство и подготовку производства.
  • Экспертная оценка. Предложите и рассмотрите изменения в производственных системах. Тест на подготовке производства, определите точно, какие потребности быть сделанным и записывают, какие сервисы могут быть затронуты как долго. Не позволяйте Управлению изменениями ухудшиться в политические бои бюрократического питания.
  • Криптография исследования. Современный системный администратор отвечает за сетевые ресурсы; при добавлении безопасности, поскольку заключительный шаг где-нибудь между невозможным и очень дорогим суждением. Понимая шифрование с открытым ключом, методы обработки пароля и шифрование в целом будут чрезвычайно ценны.
0
задан 15 August 2009 в 13:42
2 ответа

Необходимо установить a RewriteLog с верхним уровнем RewriteLogLevel для обеспечения правил обрабатываются, как Вы ожидаете.

Следует иметь в виду это .*? может привести к пустому соответствию, потому что * средства 0 или больше. Вы могли бы по крайней мере хотеть использовать + (таким образом, .+?), что означает один или несколько.

Anyhoo. Существуют лучшие способы выразить то, что Вы ищете.

Для соответствия до следующей наклонной черты это должно сделать:

RewriteRule ^audio/([^/]+) /audio.php?id=$1

Хотя, если это - числовой идентификатор, можно быть более точными:

RewriteRule ^audio/(\d+) /audio.php?id=$1
3
ответ дан 4 December 2019 в 13:14
  • 1
    +1 для альтернативного синтаксиса, который почти всегда более ясен, чем доверие нежадному флагу.-1 для ".*? всегда будет пустой match". в Perl.*? работает точно, поскольку OP ожидает, что к - просто протестировал его в v5.8.6. perlre страница говорит это? сделает " соответствие квантора минимум/number/времен possible" и я wouldn' t быть удивленным, было ли поведение на самом деле намеренной игрой по вопросу о том, является ли нуль числом. Perl' s ответ, по крайней мере, в этом контексте, кажется, " no". –  Ben Dunlap 15 August 2009 в 21:49
  • 2
    Возможно, я wasn' t все для очистки на той части ответа. * означает 0 или больше, + означает один или несколько. *? все еще нуль средств или больше, просто нежадный. Таким образом, если что-то еще в регулярном выражении не требует *? выполнить соответствие ненулевой длины так, чтобы весь regex мог соответствовать, это won' t. В OP' s regex, тем не менее, наклонная черта после получения потребовала бы, чтобы что-либо между двумя наклонными чертами было подобрано .*?. Но для URL как / аудио//, это было бы пустое соответствие между двумя запаздывающими наклонными чертами. –  kch 16 August 2009 в 01:36
  • 3
    Вы убедили меня так или иначе. Это определенно doesn' t добавляют к ответу и могут вызвать некоторый беспорядок. I' ll вырезают его. –  kch 16 August 2009 в 01:37
  • 4
    Хорошее разъяснение и спасибо за пример. Я предполагаю, что Perl думает 0, число, в конце концов. ;-) +1 –  Ben Dunlap 16 August 2009 в 03:14

Это действительно идет в, зависит от точно, что Вы после делаете. Какой путь передается исходному запросу? Это всегда/audio/some_id/other_stuff? В чем другая конфигурация там для путей с "аудио"? Для запроса формы:

http://www.example.com/audio/some_id/other_stuff

Вы, вероятно, захотите RewriteRule:

ReWriteRule ^/audio/(.*)/.*$ /audio.php?id=$1

Я думаю.*? не делают то, что Вы хотите. Дайте этому водоворот и посмотрите то, что он делает. Можно также найти справочник регулярного выражения Perl полезным.

0
ответ дан 4 December 2019 в 13:14

Теги

Похожие вопросы