Я использую стандартные установки PHP 5.3 и Apache 2, предоставленные Apple, для веб-разработки на Mac Pro, который я только что обновил до Mac OS X 10.6 (Snow Leopard). Обновление прошло достаточно хорошо, если я проигнорирую тот факт, что оно лишило меня способности выполнять работу. ;)
После обновления приложение CakePHP, которое я разрабатывал, начало выдавать мне 403 запрещенных ошибки при доступе. Основываясь на ошибках в файле журнала, я определил, что Apache задыхается от правил mod_rewrite в файле .htaccess Cake. Вот файл целиком:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
Дело не в том, что сами правила неверны, а в том, что Apache вообще запрещает использование mod_rewrite. Все остальные страницы на машине работают нормально, и ошибка 403 исчезнет, если я закомментирую файл .htaccess (но, конечно, ничего не работает).
В моем файле httpd.conf я попытался изменить это:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
К этому:
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
... что не имеет никакого эффекта.
Я мало что знаю о файлах конфигурации Apache, и я застрял на этом. На самом деле я знаю достаточно мало, чтобы не знать, какая информация о моей настройке необходима, чтобы люди могли дать полезные ответы. Я просто использую ванильную установку OS X, ничего особенного.
На этот раз поиск в Google не принес мне никаких результатов, поэтому я обращаюсь к вам. Любые идеи?
Как насчет прав собственности / разрешений на файлы, на которые вы указываете? Я более склонен думать, что Apache не может до них добраться, а не Apache на данный момент.
Изменить с помощью решения: положить Options +FollowSymLinks
выше RewriteEngine On
Добавление FollowSymlinks в htaccess не помогло мне, поэтому я немного погуглил, что нашел другое решение
Оказывается, есть еще один блок каталога в /etc/apache2/users/.conf, в котором вам нужно добавить FollowSymlinks в Options и изменить AllowOverride на All
<Directory "/Users/<your user>/Sites/">
Options Indexes MultiViews FollowSymlinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
Перезапустите файлы apache и htaccess, и теперь должны работать условия перезаписи.
Хорошо, это мое решение, извлеченное из комментариев на этой странице:
Конфигурация:
Решение: комбинация Матье Садуни и Джейсона Стрэка, поэтому:
+ Изменить /private/etc/apache2/users/{user}.conf кому:
<Directory "/Users/{user}/Sites/">
Options Indexes MultiViews FollowSymlinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
И измените корневой файл Cake .htaccess на:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /~{user}/cake_1_3/
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
(Где {user} - ваше имя пользователя, а cake_1_3 - ваш каталог тортов)
ОБНОВИТЬ: Да, я новичок в Cake, поэтому я начал с 15-минутного руководства для блога. Вот как я узнал, что вам нужно отредактировать еще два файла .htaccess:
После RewriteEngine on
добавить строку RewriteBase /~{user}/cake_1_3/
и здесь.
У меня была ОЧЕНЬ проблема с этим. Если вы используете Leopard или выше, у вас, вероятно, возникнут проблемы с файлом mod_rewrite.
Когда ваши файлы помещаются в http: // localhost / ~ имя пользователя / торт, вы не видите стили. Вот способ исправить это.
Сначала откройте httpd.conf. (Я использую nano. Просто убедитесь, что все, что вы используете, может сохранить системный файл.) Убедитесь, что перед компонентом mod_rewrite нет хэша. Затем прокрутите вниз до раздела. Установите для AllowOverride None значение AllowOverride All. (Только для Snow Leopard) Перейдите в apache2 / users / .conf. Отредактируйте этот файл так, чтобы строки гласили: Параметры Индексы MultiViews FollowSymLinks Разрешить переопределить все. Теперь сохраните и перезапустите apache (sudo apachectl restart). А вот и сложная часть. Если вы перейдете на свой сайт, он должен предупредить вас о том, что каталог не найден. Теперь вам нужно отредактировать файлы .htaccess. Начните в своем основном каталоге. прямо под RewriteEngine On добавьте следующую строку «RewriteBase / ~ //». Сделайте это для корневой папки, папки приложения и папки webroot, обязательно включив их в каждый файл .htaccess. Крайне важно, чтобы вы добавили конечную косую черту. Это важно. Надеюсь, это поможет! Удачи. Б-г знает, что тебе это понадобится.
Для протокола и в ответ на @Matthie Sadouni
Я использую Snow Leopard (OS X 10.6), и мой файл {user} .conf находится в другом месте, чем он описал.
«/Private/etc/apache2/users/{user}.conf»
(Замените {user} своим именем пользователя Mac)
Мне приходилось использовать «RewriteBase / ~ username //», если он находился в каталоге моего домашнего сайта, и мне приходилось использовать «RewriteBase / ~ username / cakePHP //», когда я помещал его в подпапку моего домашнего веб-каталога.