внутреннее перенаправление mod_speling, или как обрабатывать заглавные буквы с помощью mod_rewrite - PullRequest
1 голос
/ 06 сентября 2010

У меня есть это правило:

RewriteRule ^(panel|admin|site)/([A-Za-z0-9]+?)/(scripts|assets)/(.*)$ Project/$2/Public/$3/$1/$4 [L]

Идея состоит в том, чтобы разрешить доступ к публичным активам, поскольку они существуют внутри модулей кода.Единственная проблема заключается в том, что для схемы именования требуется регистр заголовка (предположим, это невозможно изменить).Следовательно, запрос:

/site/users/scripts/myscript.js

возвращает 404, но:

/site/Users/scripts/myscript.js

работает.

Я попытался использовать mod_speling для решения проблемы с обсадной колонной,однако mod_speling выполняет полное перенаправление, а не внутреннее, поэтому URL-адрес конечного пользователя меняется на:

/Project/Users/Public/scripts/myscript.js

Что не годится.Это означает, что моя структура каталогов несколько открыта, и это означает, что мне нужно дополнительное правило перезаписи, чтобы пройти через это.

Есть ли способ обработать заглавные буквы в mod_rewrite более изящно, т.е. без использования RewriteMap?(Необходимо сохранить все в .htaccess)

В качестве альтернативы, есть ли способ изменить mod_speling для использования внутреннего перенаправления?

1 Ответ

0 голосов
/ 06 сентября 2010

более изящная обработка заглавных букв в mod_rewrite, то есть без использования RewriteMap?

Мне кажется, что вы можете использовать внутреннюю функцию сопоставления tolower, и для этого не потребуется никаких внешнихфайлы.Или я что-то упустил?

Редактировать: хакерский ответ - 26 правил перезаписи для каждого из AZ в качестве первой буквы, а подстановка использует строчную букву ... Или правило для слова (например, Пользователь), котороеможет появиться в URL

...