Могу ли я сделать Apache, работающий в Windows, чувствительным к регистру? - PullRequest
14 голосов
/ 03 февраля 2009

Файловые системы Windows (FAT, NTFS) не заботятся о регистре имен файлов (без учета регистра). Следовательно, программы, такие как веб-сервер Apache, работающие в Windows, обрабатывают файл без учета регистра.

Когда вы создаете веб-сайты в Windows, вы случайно создаете ссылки и т. Д., Которые не соответствуют регистру фактического имени файла. Обычно вы замечаете эти ошибки только после развертывания веб-сайта в чувствительных к регистру файловых системах (по умолчанию в Linux, UNIX, ...).

Теперь я хотел бы знать, есть ли способ избежать подобных ошибок, заставляющий веб-сервер Apache как-то заботиться о случае, даже если файловая система не заботится . Я имею в виду, что NTFS различается между заглавными и строчными буквами в именах файлов, поэтому теоретически можно проверить, совпадают ли имена файлов с учетом регистра.


Я знаю, что соглашения об именах, такие как " Только строчные буквы ", могут помочь избежать подобных проблем, но это не помогает с существующими файлами и менее удобно: -)

Кроме того, не использовать Windows не вариант. Я добровольно не пользуюсь Windows, и в этом случае запуск Apache на другой платформе невозможен.

Ответы [ 7 ]

4 голосов
/ 03 февраля 2009

Насколько я знаю, вы не можете, но я буду смотреть этот вопрос для других ответов.

В качестве обходного пути вы говорите, что должны разрабатывать в Windows. Как насчет установки Linux на виртуальном ПК. Существует несколько бесплатных программ для виртуальных машин, таких как VirtualBox и Microsoft Virtual PC . Таким образом, вы можете согласовать свою среду разработки со своей средой развертывания.

Кроме того, я считаю, что лучше всего убедиться, что вы используете строчные буквы для всего, минимизируя ошибки.

3 голосов
/ 04 октября 2014

Согласно документации Apache, это невозможно, поскольку нечувствительность к регистру встроена в ОС Windows. Но вы можете «решить проблему» и включить сервер Apache под Linux / Unix без учета регистра. Просто добавьте следующие директивы в ваш .htaccess:

RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lowercase:$1} [R,L]

См. Документацию здесь .

1 голос
/ 15 апреля 2019

Так что теперь возможно сделать это на Windows 10 https://www.windowscentral.com/how-enable-ntfs-treat-folders-case-sensitive-windows-10

fsutil.exe файл SetCaseSensitiveInfo C: \ folder \ path enable

0 голосов
/ 21 мая 2012

Windows, МОЖЕТ быть установлен в режим с учетом регистра. Том NTFS также поддерживает регистрозависимый режим. Если вы ранее установили совместимость с UNIX, возможно, ваша Windows уже перешла в режим с учетом регистра. Я полагаю, что в реестре есть переключатель, но я забыл, где он находится, поэтому я не могу понять, что наш для вас : - (

0 голосов
/ 03 февраля 2009

Это не проблема, которую вы можете решить так, как вы хотите. Вам нужно загрузить свои файлы, введя строчные буквы. Вы избежите проблемы конфликта имен в Windows, поэтому, если вы создаете что-то в Windows, вам не придется об этом беспокоиться. Теперь вам нужно использовать какую-то программу проверки ссылок, чтобы найти URL-адреса, содержащие заглавные буквы, а затем заменить их строчными буквами.

Тем не менее, Райан Гилл сделал хорошее предложение включить CheckSpelling.

0 голосов
/ 03 февраля 2009

NTFS действительно поддерживает имена файлов с учетом регистра. Он используется и включен службами Microsoft для UNIX. Контролируется в реестре. Сделайте Google на разделе реестра "ObCaseinSensitive". например MSDN блог и, в частности, эта статья Microsoft KB: kb817921

0 голосов
/ 03 февраля 2009

Похоже, вы можете включить mod_spelling с помощью директивы CheckSpelling в файле конфигурации Apache.

Информация и контекст найдены здесь: http://bytes.com/topic/apache/answers/608164-apache-case-sensitive-urls

Редактировать: вышесказанное было приведено для обратного вопроса, извините. Кто-то задает тот же вопрос, который вы задаете после этого, но никогда не отвечает, работает ответ или нет. Посмотрев дальше, на самом деле в самом Apache, похоже, нет флага или какой-либо настройки для этого. Некоторые люди предлагают попытаться сделать файловую систему чувствительной к регистру, что кажется возможным, но похоже, что это вызывает больше проблем, особенно с другими программами, которые этого не ожидают.

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

Извините за недоразумение и за то, что я не могу больше помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...