Новичок - что мне нужно сделать с httpd.conf, чтобы CakePHP работал правильно? - PullRequest
2 голосов
/ 11 января 2011

(Не уверен, принадлежит ли это здесь или веб-мастерам; пожалуйста, переместите в случае необходимости.)

Я новичок в Cake и не намного лучше с Apache; я сделал много PHP, но всегда с сервером, который уже был настроен кто-нибудь другой. Итак, я прохожу базовый учебник по , и это говорит:

Примечание к mod_rewrite Иногда новый пользователь сталкивается с проблемами mod_rewrite, поэтому я упомяните их немного здесь. Если страница приветствия торта выглядит немного забавно (без картинок или стилей CSS), это, вероятно, означает, что mod_rewrite не функционирует в вашей системе. Вот несколько советов, которые помогут вам встать и работает:

Убедитесь, что переопределение .htaccess разрешено: в вашем httpd.conf, у вас должен быть раздел, который определяет раздел для каждого каталога на ваш сервер. Убедитесь, что AllowOverride установлен на Все для правильного Каталог.

Убедитесь, что вы редактируете систему httpd.conf, а не пользователь или сайт-httpd.conf.

По тем или иным причинам вы могли получить копию CakePHP без необходимых файлов .htaccess. Это иногда случается, потому что некоторые операционные системы обрабатывают файлы, начинающиеся с '.' как скрытый, и не копируйте их. Убедитесь, что ваша копия CakePHP из загрузок раздел сайта или наш SVN-репозиторий.

Убедитесь, что вы правильно загружаете mod_rewrite! Тебе следует увидеть что-то вроде LoadModule rewrite_module libexec / httpd / mod_rewrite.so и добавьте модуль mod_rewrite.c в ваш httpd.conf. "

Я использую XAMPP на Linux. Я нашел свой файл httpd.conf в opt / lampp / и т.д., но я не уверен, что мне нужно с этим делать. Я искал "переписать", и есть только одна строка:

LoadModule rewrite_module modules / mod_rewrite.so

В AddModule ничего нет mod_rewrite.c.

Должен ли я просто создать раздел каталога для каталога, который я установил Закажите и установите AlllowOverride на All? (Я создал отдельный подкаталог моего wwwroot и установлен там, так как у меня также есть устанавливает Joomla и CodeIgniter.) Что-нибудь еще мне нужно делать? Моя загрузка Cake шла с двумя файлами типа htaccess (._. htaccess и .htaccess) - нужно ли с ними что-нибудь делать?

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

РЕДАКТИРОВАТЬ ДОБАВИТЬ образец виртуального хоста:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /www/docs/dummy-host.example.com
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

Ответы [ 2 ]

1 голос
/ 11 января 2011

Шаг 1. У вас должен быть включен mod_rewrite, проверьте с помощью <?php phpinfo();

Шаг 2. Проверьте AllowOverride

// I believe you already did that. 
// Make sure you are doing it for the correct webroot!
<Directory />
   AlllowOverride to All
</Directory>

Шаг 3. Проверьте файлы по умолчанию .htaccess в каталогах /mypro, /mypro/app, /mypro/app/webroot.

Шаг 4. .htaccess может потребоваться исправление пути в зависимости от установки вашего проекта тортов.

 e.g. project url http://localhost/mypro/app/webroot/
 /mypro/app/webroot/.htacess
 <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$ mypro/app/webroot/    [L]
    RewriteRule    (.*) mypro/app/webroot/$1 [L]
 </IfModule>

EDIT

Если вы пытаетесь настроить его как локальные домены, настройте локальные домены (в Windows) с настроенным WAMP Примечание: это может быть немного подправлено для различного рода установок Найдите ваш файл hosts (мой находится по адресу C: \ WINDOWS \ system32 \ drivers \ etc \ hosts) Вставьте это в основание

# save and close this file named hosts
127.0.0.1       mypro.localhost

Чтобы проверить имя хоста, откройте командную строку и запустите ping mypro.localhost # If ping is good then move on

Now open your apache config file 
httpd.conf and httpd-vhosts.conf (my files are located at)

C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf
# uncomment line below
Include conf/extra/httpd-vhosts.conf
C:\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf
# Insert virtual host entries like this, trim dummy entries (if any)

# Changing DocumentRoot
<VirtualHost *:80>
    DocumentRoot "C:/wamp/www"
    ServerName localhost
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/mypro/app/webroot"
    ServerName mypro.localhost
</VirtualHost>

Сохранение и закрытие файлов

Создать каталог C: / wamp / www / mypro (если вы еще не создавали)

0 голосов
/ 11 января 2011

ModRewrite позволяет Apache манипулировать URL-адресами запроса, прежде чем он обработает запрос.Например, если вы хотите сохранить ваши изображения в /website_images, но вы хотите сослаться на них в своем HTML-коде как /img/donkey.jpg, вы можете использовать ModRewrite, чтобы изменить все запросы с /img/* на /website_images/*.Он обрабатывает это с помощью регулярных выражений, о которых написаны целые книги.

Что касается Apache, существует множество конфигурационных "директив" (также называемых опциями или настройками).Наиболее важными для изучения, когда вы запускаете свой собственный сервер, будут VirtualHost.Они позволяют Apache обрабатывать запросы к IP-адресу вашего сервера и направлять их на правильный веб-сайт на основе имени хоста (по существу, домена).Вы должны поместить любые специфичные для сайта директивы в конфигурацию VirtualHost этого сайта, включая ваши правила ModRewrite.Примечание: вы также можете загрузить дополнительные директивы из файла .htaccess в каталоге веб-сайта, но это неоптимально (и требует установки AllowOverride. Если у вас есть доступ к httpd.conf и соответствующим директивам VirtualHost, вы должны использовать их вместо этого).

Похоже, что Apache уже настроен для загрузки модуля ModRewrite, поэтому вам не нужно его менять. В директивах VirtualHost для вашего нового веб-сайта CakePHP вы можете использовать следующие директивы под <Directory /path/to/your/website>настроить ModRewrite:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Это выглядит большим и страшным, но все, что он делает, говорит Apache направлять все запросы, которые он не может обработать (потому что ресурсы не существуют), в index.php.Когда это происходит, CakePHP вступает во владение и направляет запрос соответствующему контроллеру и действию.

Я не знаком с тем, как настроен XAMPP, поэтому я не могу сказать вам, где будут эти определения VirtualHostМожет быть, кто-то еще может звонить здесь ...

...