МОЯ ПРОБЛЕМА:
Когда я захожу на localhost, сайт не работает. Он показывает некоторый текст с сайта, но кажется, что сервер не может найти другие файлы. Вот фрагмент ошибок от firebug:
"NetworkError: 404 Not Found - localhost/css/popup.css"
"NetworkError: 404 Not Found - localhost/css/style.css"
"NetworkError: 404 Not Found - localhost/css/player.css"
"NetworkError: 404 Not Found - localhost/css/ui-lightness/jquery-ui-1.8.11.custom.css"
"NetworkError: 404 Not Found - localhost/js/jquery.js"
Кажется, мой сервер ищет файлы не в том месте. Например, localhost / css / popup.css на самом деле находится по адресу localhost / app / webroot / css / popup.css.
Мой сайт настроен на удаленном сервере с такими же точными конфигурациями, и он отлично работает. У меня просто возникла эта проблема при попытке запустить сайт на моем ноутбуке на локальном хосте. Я отредактировал свой файл VirtualHosts DocumentRoot и в /home/user/public_html/site.com/public/app/webroot/, и это уменьшило количество ошибок, но я чувствую, что это неправильно, и вроде как взломал его, так как я не использовал эти настройки на моем производственном сервере, который работает.
Последнее, что я хочу сделать, это то, что на веб-сайте используются динамические URL-адреса. Я не знаю, связано ли это с этим. Например, на производственном сервере URL-адреса: site.com/#hello/12321.
ЗДЕСЬ, С ЧЕМ Я РАБОТАЮ:
На моем ноутбуке установлен сервер LAMP, работающий под управлением Ubuntu 11.10.
Я включил mod_rewrite:
sudo a2enmod rewrite
Затем я отредактировал свой файл виртуальных хостов:
<VirtualHost *:80>
ServerName localhost
DirectoryIndex index.php
DocumentRoot /home/user/public_html/site.com/public
<Directory /home/user/public_html/site.com/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Затем перезапустил apache. На моем веб-сайте используется cakePHP. Это структура каталогов веб-сайта: "/home/user/public_html/site.com/public" содержит:
index.php app cake plugins vendors
Это мои файлы .htaccess:
/home/user/public_html/site.com/public/app/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
/home/user/public_html/site.com/public/app/webroot/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Ваш сайт находится под /home/user/public_html/site.com/public
.
Это содержит: index.php app cake plugins vendors
И ваш корень .htaccess
файл:
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
Итак, это означает: что бы это ни было, перейдите в webroot
папку в вашей установке.
Но я не вижу webroot
папка. Я что-то упускаю?
У вас есть .htaccess в каталогах app / и app / webroot, но ничего в корневом каталоге.
У вас должен быть файл: /home/user/public_html/site.com/public/.htaccess
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
ИЛИ
Измените свой docroot на
DocumentRoot /home/user/public_html/site.com/public/app/
Оба эти ответа предполагают, что public / index.php не использует какую-то расширенную маршрутизацию для URI. Однако перезаписывать вложенные файлы .htaccess - это беспорядок.
На вашем ноутбуке есть ли у вас параметр AllowOverride, установленный в конфигурации apache, чтобы разрешить использование файлов .htaccess?
Видеть: http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
Подробности.
Или просто добавьте следующее в свой httpd.conf
и перезапустите apache:
AllowOverride All
Если это поможет, то просмотрите ссылку выше и уточните AllowOverride
директива. Если не поможет, выньте AllowOverride
вы добавили (но оставьте все, что уже было) и перезапустите apache.
Я не вижу упоминания о логах. Firebug - это не журналы ошибок Apache. В этом случае нет замены журналам ошибок Apache, поэтому запустите журнал ошибок и проверьте error.log