Здравствуйте! Пересел на Ubuntu, соответственно, поднял сервер, но вот беда: теперь работает только главная страница. Поставил Denwer в Windows под виртуалом, все работает. Подозреваю, что дело либо в настройках apache, либо в .htaccess, но разобраться ни в том ни в другом не получается.
Чтобы было проще найти ошибку, напишу что как делал и дам листинг .htaccess
*/Ubuntu 10.04
Apache/2.2.14
MySQL: 5.1.41
Drupal 6.14/*
Ставлю сервер:
sudo tasksel install lamp-server
Создаем директорию для сайта:
mkdir -p ~/Sites/test.ru/public
Показываем апачу наш сайт:
sudo gedit /etc/apache2/sites-available/test.ru
Пишем в созданный файл настройки виртуального хоста:
ServerName test.ru
ServerAlias www.test.ru
DocumentRoot /home/$USER/Sites/test.ru/public
</VirtualHost>
Говорим апачу, что сайт нужно обслуживать:
sudo a2ensite test.ru
Перегружаем конфиги апач:
sudo /etc/init.d/apache2 reload
Прописываем хосты:
sudo gedit /etc/hosts
В открывшийся файл, после localhost добавляем:
127.0.0.1 test.ru
Ставим phpmyadmin, импортируем базу, кидаем файлы в /home/$USER/Sites/test.ru/public
Все открывается, но, когда жмем на ссылки происходит вот что:
1. Если удалить .htaccess, то вываливается ошибка 404
2. Если поместить .htaccess тот, что указан ниже (по-моему стандартный), то страница просто перезагружается
3. Если ввести ссылку во так http://test.ru/?q=admin , то drupal вываливает "Доступ запрещен
У вас нет доступа к этой странице."
И, наконец .htaccess :
# Apache/PHP/Drupal settings:
#
# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
Order allow,deny
</FilesMatch>
# Don't show directory listings for URLs which map to a directory.
Options -Indexes
# Follow symbolic links in this directory.
Options +FollowSymLinks
# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php
# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
# There is no end quote below, for compatibility with Apache 1.3.
ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>
# Set the default handler.
DirectoryIndex index.php
# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.
# PHP 4, Apache 1.
<IfModule mod_php4.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
# Do not cache dynamically generated pages.
ExpiresByType text/html A1
</IfModule>
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# If your site can be accessed both with and without the 'www.' prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment and adapt the following:
# RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
# $Id: .htaccess,v 1.90.2.3 2008/12/10 20:04:08 goba Exp $
Ну, вот так у меня поделано и чего-то явно не доделано.
Комментарии
а только Access Denied или Page not found? у меня при переносе с denwera на Ubuntu было на все страницы Not found
я в конфиге своего сайта /etc/apache2/sites-available/mysite прописал AllowOverride All вместо AllowOverride None и все заработало...
Непонятно, что такое «всё», что открывается.
Проверьте права доступа к файлам сайта, apache должен иметь к ним доступ. Соответственно, тот пользователь, от имени которого запускается apache (в Вашем случае это наверняка www-data), должен быть владельцем этих файлов.
Проверьте, включен ли mod_rewrite (для «чистых ссылок»). Если нет, включите его.
поставьте AllowOverride All на директории с друпалом
Не все, а только главная.
Не могу понять вы про какой из случаев? У меня их 3 описано
А где это сделать? В /etc/apache2/sites-available/test.ru ?
А поискать?
на лампе под убунтой по умолчанию ВЫКЛЮЧЕН mod_rewrite
Вот спасибо, orangeudav! Вбил в терминал:
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
Открыл файл конфига:
sudo gedit /etc/apache2/sites-available/default
Там были AllowOverride None заменил на AllowOverride All
И перезапустил сервер
sudo apache2ctl restart
Ссылки заработали, комент отправился. Теперь осталось разобраться почему недоступна админка. Ввожу http://test.ru/admin
Drupal пишет "Доступ запрещен
У вас нет доступа к этой странице. "
Видимо где-то что-то еще запрещено. Не могу понять что.
Эх, молодо-зелено! Вбил в строку http://test.ru/user, ввел логин и пароль и понеслась родная!
Всем спасибо за помощь и обсуждение!
про это и говорил...
Вы задаёте вопросы, а потом невнимательно читаете ответы, которые Вам даёт сообщество:
Это идеологически неправильно. Правильнее использовать a2ensite/a2dissite и a2enmod/a2dismod для того, чтобы включать и выключать сайты и модули.