Связано 1 2 3
Но этот вопрос немного отличается.
Скажите, что у меня RewriteRule, как:
RewriteRule ^test/([\w]*)/([\w]*)/([\w]*)/?$ go.php?q=THREE_$1_$2_$3
Итак, http://localhost/test/a/b/c переписывается в http://localhost/go.php?q=THREE_a_b_c
Теперь скажите, что я хочу явно перехватить условие, когда опущен средний параметр и получен двойной слеш, как http://localhost/test/a//c
Поэтому я пишу правило, например:
RewriteRule ^test/([\w]*)//([\w]*)/?$ go.php?q=TWO_$1_(EMPTY)_$2
НО ALAS , правило никогда не совпадает, кажется, RewriteRule не видитдвойная косая черта , хотя двойная косая черта сохраняется в %{THE_REQUEST}
и %{REQUEST_URI}
.
Так что я пишу правило, например:
RewriteCond %{REQUEST_URI} //
RewriteRule ^test/([\w]*)/([\w]*)/?$ go.php?q=TWO_$1_(NONE)_$2
и , что работает, потому что RewriteCond применяется, только если в REQUEST_URI есть двойная косая черта.Но, как вы можете видеть, я все еще должен предположить, что при синтаксическом анализе с регулярным выражением там НЕТ двойной косой черты.
Все это очень мешает, потому что я думал, что RewriteRule работает на% {REQUEST_URI}, но, оказывается, не , он работает на чем-то другом (версия с двойной косой чертой ..?)
Мой вопрос на самом деле: если не raw% {REQUEST_URI}, то что же дает RewriteRule?