Чистые URL-адреса, не работающие в Drupal 7
Я только что установил и начал использовать Drupal 7, и я выполнил инструкции, чтобы включить Clean Urls. Я нажал кнопку "Запустить очистку URL-адреса", но не смог вернуть никаких результатов. Он загружает что-то, а затем обновляет страницу.
Может ли кто-нибудь пролить свет на то, почему это происходит и что я могу сделать?
Ответы
Ответ 1
Создайте файл phpinfo.php, содержимое: <?php phpinfo();?>
Затем загрузите его через свой браузер. Найдите текст "Загруженные модули", он должен содержать "mod_rewrite". Если нет, включите его в настройке apache (вы можете спросить, как это сделать).
Ответ 2
Иногда почему-то открытие очищенной страницы URL-адреса терпит неудачу и не отображает ошибку (как я полагаю, с точки зрения системы ее нет). Попробуйте вручную изменить URL-адрес:
www.mydomain.com/?q=admin/config/search/clean-urls
в
www.mydomain.com/admin/config/search/clean-urls
И посмотрите, показывает ли он флажок, он делает, выбирает его и сохраняет.
Ответ 3
ваш конфигурационный файл apache (/etc/apache2/apache2.conf
) должен содержать следующие две строки. Если нет, добавьте их. Это говорит apache искать файл .htaccess
для настроек в папке "/var/www/drupal"
<Directory /var/www/drupal>
AllowOverride All
</Directory>
AccessFileName .htaccess
Ответ 4
Моя установка drupal7 находится на моем компьютере с Ubuntu 12.04, в папке usr/share/drupal7.
То, как я решил проблему, это следующее изменение в .htaccess в моей папке drupal7:
#RewriteRule ^ index.php [L]
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
и добавьте:
RewriteBase /drupal7
не добавляйте RewriteBase /drupal
.
Теперь тест в порядке, и все работает хорошо.
Ответ 5
Вы должны включить mod_rewrite в apache, чтобы сделать чистые URL-адреса для работы
Если mod_rewrite не находится в phpinfo, вы должны установить его
sudo a2enmod rewrite
sudo apache2ctl -l
You need to replace the occurrence of AllowOverride none to AllowOverride all
и измените так:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
и перезапустить apache
sudo service apache2 restart
Ответ 6
У меня возникли проблемы после новой установки Drupal 7.15 на GoDaddy. Мне пришлось внести следующие изменения в .htaccess, чтобы заставить их работать...
# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
#RewriteRule ^ index.php [L]
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] #GoDaddy Hosting
После этого тест чистого URL-адреса по-прежнему выходит из строя, но Clean Urls на самом деле работает, как указано в ответе artonice.
Ответ 7
У меня также была проблема на хостинге GoDaddy, но решение оказалось довольно простым.
После расторжения следующей строки в .htaccess, чистый URL-тест прошел как ожидалось:
# RewriteBase /
Обратите внимание, что мой сайт работает в корне домена.