Понимание URL-адресов в Apache на Mac

Запуск Apache на Mac Snow Leopard (т. Е. Включен веб-доступ).

Пути оцениваются непредвиденными способами:
example.com/folder возвращает файл (без исключения) вместо папки.

Если я позвоню на example.com/events/March и у меня в корневом каталоге будет файл events.php, Apache вернет эту страницу, а остальная часть пути будет проигнорирована.

Кроме того, этот вызов имеет приоритет над командами в.htaccess

например. Мне нужен example.com/events/March для перенаправления на example.com/events.php?month=March
Apache возвращает http://example.com/ без обязательного аргумента.

RewriteEngine on
RewriteRule ^events/(.+)/?$ events.php?month=$1

Если events.php не существует (скажем, он называется eventsHandler.php), то приведенный выше rewriteRule прекрасно работает. Так что я знаю, что это не проблема с.htaccess

Я пытался сделать видимыми расширения файлов, это не помогло.

Итак, вопросы:

  1. Почему Apache на Mac удаляет расширение файла и рассматривает файл как папку?
  2. Почему.htaccess не отменяет это?
  3. Как мне это исправить, чтобы оно просто работало?

1 ответ

В MacOS косая черта ("/") является допустимым символом для использования в именах файлов и не является разделителем пути. Попробуйте вместо этого использовать двоеточие для разделителя пути.

Кроме того, обязательно проверяйте свои пути во всем коде, от которого вы зависите, потому что вы можете иногда сталкиваться с некоторым кодом, который попытается автоматически преобразовать пути после обнаружения ОС. Мы столкнулись с некоторыми проблемами, подобными этой, еще во времена Novell NetWare (не с NetWare, которая поддерживала несколько соглашений об именах файловых систем на одном томе, добавив нечто, называемое "пространством имен" на стороне сервера, но с помощью сторонних инструментов и библиотеки, которые могут иногда вводить в заблуждение).

Другие вопросы по тегам