Я не могу заставить mod_rewrite работать на Lion. Я разрабатываю несколько сайтов локально, в ~ / Sites, используя файлы .htaccess. Я нахожусь на 10.7.3, и я не касался никаких файлов конфигурации, за исключением включения PHP в httpd.conf (который работает).
Я знаю, что здесь есть по крайней мере 2 вопроса по этому поводу, но детальные решения там не работают. Также как и другие решения, которые я нашел в Интернете. Я, должно быть, делаю что-то глупое или что-то упускаю из виду, иначе я, наверное, схожу с ума, но это не работает.
Я попробовал все обычные вещи:
В
/private/etc/apache2/users/<myusername>.conf
, измененияAllowOverride None
кAllowOverride All
и перезапустить веб - серверКроме того,
/private/etc/apache2/httpd.conf
измените все / все вхожденияAllowOverride None
наAllowOverride All
- я пробовал это во всех различных местах, где находятся эти директивыПопробуйте в основном все возможные комбинации значений для
Options
строки выше / нижеAllowOverride
линии, включая значения:Indexes MultiViews FollowSymLinks All
Конечно, всегда перезагружать веб-сервер после такого изменения. Ничего из этого не работает. Все мои чистые URL просто не работают; Я получаю 404 - не найдено. Журнал ошибок Apache просто дает мне ошибки «Файл не существует:». Таким образом, кажется, что модуль mod_rewrite даже не работает вообще.
Я удостоверился, что mod_rewrite загружен в httpd.conf, который это; это так по умолчанию при установке Lion.
Сумасшедшая вещь в том, что все работало идеально - пока я не перешел на новую машину под управлением Lion. То есть я исключаю ошибку в моих файлах .htaccess, потому что я знаю, что она работала раньше. Кроме того, если бы это была ошибка в .htaccess, я бы получил какое-то сообщение об ошибке из модуля mod_rewrite в файле ошибок Apache, по крайней мере, сообщая мне, что сам модуль вызывается. Но этого не происходит.
Я что-то пропускаю? Нужно ли менять настройки конфига где-нибудь еще? Должен ли я изменить конфигурацию PHP? Почему инструкции (например, Как активировать mod_rewrite на MacOSX Lion и заставить mod_rewrite работать на Mac OS X ) работают для других людей, но не для меня? :)
Я уже потратил часы на это. Любая помощь будет очень признательна.
источник
Ответы:
Вы должны убедиться, что в вашем /etc/apache2/users/username.conf есть следующее:
FollowSymlinks и AllowOverride необходимы здесь. Хотя вы намекаете на оба вопроса в своем вопросе, возможно, вы неправильно настроили их в тандеме.
Убедитесь, что файл httpd.conf /private/etc/apache2/extra/httpd-userdir.conf также включен. Это по умолчанию.
После любых изменений перезапустите веб-сервер, чтобы изменения вступили в силу.
Если у вас все еще есть проблемы, возможно, есть проблема с вашими настоящими правилами переписывания. Вы также использовали их в контексте .htaccess? Обратите внимание, что в .htaccess регулярное выражение правила перезаписи сопоставляется с URI запроса без косой черты и всегда относительно каталога, в котором находится .htaccess , тогда как в глобальном httpd.conf URI должен совпадать с косой чертой и относительно корня сети. Поскольку предположительно у вас есть .htaccess в подкаталоге ~ / Sites, ваши правила перезаписи могут вести себя иначе, чем когда .htaccess находится в веб-корне (виртуального) хоста.
Для отладки mod_rewrite вы можете включить перезапись журнала. Вы должны включить это в /etc/apache2/httpd.conf:
источник
Добавление параметров + FollowSymLinks работал хорошо для меня
источник
Options +FollowSymLinks
? Я просто добавляю эту строку, она работает для меняЯ столкнулся с подобной проблемой, когда мой файл .htaccess полностью игнорировался, находясь в подпапке в моем каталоге ~ / Sites в VirtualHost, который был настроен правильно.
Проведя последний час, играя с различными файлами конфигурации и устанавливая AllowOverride All в разных местах, я наконец-то обнаружил, что файл .htaccess, хотя он был похож на файл .htaccess в Finder, на самом деле был файлом .htaccess.txt с расширение скрыто.
Чтобы проверить и изменить файл .htaccess, щелкните его правой кнопкой мыши и выберите «Получить информацию», а затем обязательно удалите любое ведущее расширение с конца, такое как у меня:
И теперь это работает!
источник
Ниже .htaccess записи исправить для меня
источник
Поместите .htaccess в / Library / WebServer / Documents и откройте «localhost /»; чтобы проверить это, работает как ожидалось. Это просто не работает в "~ / Sites". Спасибо Нильсу Хайденрайху за это!
источник
Когда вы печатаете: / Users / username / app_name
/ Относится к корню веб-сервера:
«Локальный /»
Если вы используете / ~ username / app_name в перезаписи, это должно работать.
источник
/
, всегда являются абсолютными путями для Apache, см. Определение корня веб-сервера в http.conf (<Directory "/Library/WebServer/Documents">
)