Могу ли я сделать Apache для Windows с учетом регистра?
Файловые системы Windows (FAT, NTFS) не заботятся о случаях имен файлов (без учета регистра). Следовательно, программы - например, веб-сервер Apache - работают с окнами, обрабатывают файлы case-insenstive.
При создании веб-сайтов в Windows вы непреднамеренно создаете ссылки и т.д., которые не соответствуют случаю фактического имени файла. Обычно вы замечаете ошибки только до тех пор, пока вы не разместите веб-сайт на файловых системах, чувствительных к регистру (по умолчанию в Linux, UNIX,...).
Теперь я хотел бы знать, есть ли способ избежать таких ошибок , чтобы веб-сервер Apache каким-то образом заботился о случае, даже если файловая система не заботится. Я имею в виду, что NTFS различается между строчными и строчными буквами в именах файлов, поэтому теоретически возможно проверить, совпадают ли имена файлов с учетом регистра.
Я знаю, что соглашения об именах, такие как "Использовать только строчные буквы", могут помочь избежать подобных проблем, но это не помогает с существующими файлами и менее удобно: -)
Кроме того, использование Windows не является вариантом. Я не использую Windows добровольно, и запуск Apache на другой платформе в этом случае невозможен.
Ответы
Ответ 1
Насколько я знаю, вы не можете, но я буду смотреть на этот вопрос для других ответов.
Как обходной путь, вы говорите, что вы должны развиваться в Windows. Как насчет установки Linux на виртуальном ПК. Существует несколько бесплатных программ VM, таких как VirtualBox и Microsoft Virtual PC. Таким образом, вы можете сопоставить среду разработки с средой развертывания.
Помимо этого, я считаю, что лучше всего просто убедиться, что вы используете строчные буквы для всего, минимизируя ошибки.
Ответ 2
В соответствии с документацией Apache это невозможно, поскольку нечувствительность к регистру встроена в ОС Windows.
Но вы можете "обратить вспять проблему" и превратить сервер Apache под Linux/Unix нечувствительным к регистру. Просто добавьте следующие директивы в ваш .htaccess:
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lowercase:$1} [R,L]
Смотрите документацию здесь.
Ответ 3
Кажется, вы можете включить mod_spelling с директивой CheckSpelling в конфигурационном файле Apache.
Информация и контекст, найденные здесь: http://bytes.com/topic/apache/answers/608164-apache-case-sensitive-urls
Изменить: приведенное выше было указано для обратного вопроса, извините. Кто-то задает тот же вопрос, что и после этого, но никогда не отвечает, если ответ работает или нет. После того, как вы посмотрели дальше, на самом деле не кажется, что это флаг или какой-либо параметр в apache. Некоторые люди предлагают попробовать сделать файловую систему чувствительной к регистру, которая кажется возможной, но похоже, что это вызывает больше проблем, особенно с другими программами, которые этого не ожидают.
В целом, если вы не можете разработать на другой ОС, и вы не можете пройти и изменить все существующие имена файлов как строчные (это понятно), то это не похоже, что у вас действительно много вариантов. Единственное, что я хотел бы дать вам на данном этапе, - попытаться получить тестовую среду, настроенную точно так же, как и вашу производственную среду, и проверить как можно больше, прежде чем отправлять на производство.
Извините за недоразумение и я не могу больше помочь.
Ответ 4
NTFS действительно поддерживает имена файлов, чувствительных к регистру. Он используется и активируется службами Microsoft для UNIX.
Он контролируется в реестре.
Сделайте google в разделе реестра "ObCaseinSensitive".
например msdn blog
и, в частности, эту статью Microsoft Microsoft: kb817921
Ответ 5
Это не проблема, которую вы можете решить так, как хотите. Вам нужно загрузить свои файлы, запустив нижний регистр. Вы избежите проблем с именованием конфликтов в Windows, поэтому, если вы создаете вещи в Windows, вам не придется беспокоиться об этом. Теперь вам нужно использовать какую-то программу проверки ссылок, чтобы находить URL-адреса, которые содержат заглавные буквы, а затем заменяются строчными эквивалентами.
Однако, Райан Гилл сделал хорошее предложение включить CheckSpelling.
Ответ 6
Windows, CAN может быть настроен на чувствительный к регистру режим. Том NTFS также поддерживает режим чувствительности к регистру. Если раньше вы устанавливали совместимость с UNIX, ваши Windows, возможно, уже перешли в режим, чувствительный к регистру. Я считаю, что есть переключатель в реестре, но я забыл, где он, поэтому я не могу понять это для вас.: - (
Ответ 7
Так что теперь это можно сделать в Windows 10 https://www.windowscentral.com/how-enable-ntfs-treat-folders-case-sensitive-windows-10
Файл fsutil.exe SetCaseSensitiveInfo C:\folder\path enable