Чистые 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 /

Обратите внимание, что мой сайт работает в корне домена.