Я борюсь с очень простой проблемой регулярных выражений в моем файле .htaccess, на которую, я надеюсь, кто-то сможет пролить свет. Основная предпосылка заключается в том, что я хотел бы научить Apache переключать любое расширение .html в расширение .var. Я думал, что правило будет положительно тривиальным:
RewriteRule ^([^.]+)\.html$ $1.var
Но часть [^.] Просто не работает. Как ни странно, это работает так
RewriteRule ^([^A-Z]+)\.html$ $1.var
Я не понимаю, почему работает это последнее правило. Предположим, я ищу файл с именем «index.html», тогда $ 1 должен соответствовать «index». и бит ".html" на самом деле не должен совпадать.
Чтобы немного расширить суть вопроса, я на самом деле ломаю голову над тем, как реализовать многоязычный сайт. Мне не нравится опция MultiView в Apache, потому что она навязывает мне плоскую структуру каталогов с расширениями файлов, которые не распознаются многими инструментами разработки. Я мог бы пойти по пути карты типов .var, но обнаружил, что конфигурация по умолчанию для Apache также не очень хорошо поддерживает это (отсюда и мои экскурсии в регулярные выражения). Поэтому, когда я использую mod_rewrite, я думаю, что могу пойти на все: когда поступает запрос на файл name.html и этот файл не существует, проверьте, существует ли файл XX / name.html, где «XX» - код языка в соответствии с предпочтениями пользователя.
Это дало бы мне более точную структуру каталогов, хотя, возможно, она не работает так же, как подход .var, в ситуации, когда языковые предпочтения браузера пользователя не поддерживаются моим сайтом (в этом случае .var будет заменить EN или аналогичный).
Есть мысли? Спасибо.