Понимание 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
Я пытался сделать видимыми расширения файлов, это не помогло.
Итак, вопросы:
- Почему Apache на Mac удаляет расширение файла и рассматривает файл как папку?
- Почему.htaccess не отменяет это?
- Как мне это исправить, чтобы оно просто работало?
1 ответ
В MacOS косая черта ("/") является допустимым символом для использования в именах файлов и не является разделителем пути. Попробуйте вместо этого использовать двоеточие для разделителя пути.
Кроме того, обязательно проверяйте свои пути во всем коде, от которого вы зависите, потому что вы можете иногда сталкиваться с некоторым кодом, который попытается автоматически преобразовать пути после обнаружения ОС. Мы столкнулись с некоторыми проблемами, подобными этой, еще во времена Novell NetWare (не с NetWare, которая поддерживала несколько соглашений об именах файловых систем на одном томе, добавив нечто, называемое "пространством имен" на стороне сервера, но с помощью сторонних инструментов и библиотеки, которые могут иногда вводить в заблуждение).