Чистый URL не работает, модуль mod_rewrite установлен - PullRequest
3 голосов
/ 25 сентября 2010

Я только что установил свежую копию Drupal 6.19, чтобы ускорить процесс написания модулей. Но по какой-то причине модуль перезаписи не работает для Drupal.

Что я проверил:

  • $ apachectl -M >> установлено
  • php_info() на текущем сервере >> говорит, что перезапись установлена ​​также
  • Я также дважды проверил файл .htaccess в моей корневой папке Drupal
  • ОБНОВЛЕНИЕ: проверено httpd.conf для AllowOverride All

У меня нет вариантов здесь. Посмотрел везде, но настройки Drupal не позволяют мне включить настройки, и их тест просто посещает сайт, который должен работать, если там был модуль перезаписи.

Мои характеристики: Mac OS X 10.6 Snow Leopard Использование встроенного Apache с PHP5

Спасибо!

Ответы [ 8 ]

7 голосов
/ 25 сентября 2010

И последнее, но не менее важное: вы должны разрешить вашему виртуальному хосту или каталогу использовать .htaccess.

AllowOverride All

Обновление:

Я не могу понятьТочная проблема, но всегда стоит проверить, что Apache действительно анализирует ваш файл .htaccess.Сделайте синтаксическую ошибку преднамеренно и посмотрите, получите ли вы сообщение 500 Internal Server Error.Кроме того, протестируйте mod_rewrite с простым правилом перенаправления, которое не включает Drupal.

3 голосов
/ 18 октября 2010

Еще две вещи для проверки:

  1. Убедитесь, что ваш .htaccess доступен для чтения для ваших процессов apache (Да, я читал, что вы дважды проверили его, но включены ли в него разрешения для файлов?)
  2. Включить ведение журнала перезаписи - это может дать вам несколько советов о том, где он не работает. Начните с уровня log 5 и увеличивайте / уменьшайте по мере необходимости. (Не забудьте выключить его позже, так как это огромная проблема с производительностью;)

Кроме того, я бы попытался упростить тестовый сценарий - начать с простой директивы перезаписи в конфигурации vhost. Как только это сработает, переместите его в .htaccess на верхнем уровне корня документа vhosts, затем в подкаталоги (если необходимо / используется).

2 голосов
/ 28 июня 2011

Убедитесь, что, если установка находится в подкаталоге, имя пользователя является частью rewriteBase

# 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 /~username/drupal**
1 голос
/ 21 сентября 2015

Чистый URL может быть что-то вроде www.example.com/fisherman вместо www.example.com/data/pages/fisherman.php

Некоторые установки apache имеют чистую функциональность URL из коробки. Для его работы необходимо правильно настроить 2 шага.

Enable rewrite module
Allow .htaccess file overrides

Оба шага требуют SSH-root-доступа к вашему серверу. Так что, если вы находитесь на общем хосте, это, вероятно, не будет работать для вас. Откройте свой терминал:

  1. Включить модуль перезаписи

Чтобы включить модуль перезаписи, вы можете набрать следующую команду

sudo a2enmod rewrite

Теперь наберите

sudo service apache2 restart

для включения изменений. Вы можете проверить, работает ли он, набрав

sudo apache2ctl –M

Появится список. Ищите «rewrite_module».

http://codeontrack.com/enable-clean-urls-apache/

1 голос
/ 25 сентября 2010

Если вы запускаете установку Drupal в подпапке, например: example.com/drupal, затем включите «RewriteBase /» в файле .htaccess, это может вам помочь.

0 голосов
/ 27 августа 2013

Как упомянул Альваро Г. Викарио, первое, что нужно сделать, - в верхней части файла .htaccess добавить что-то вроде ghfdiddfdjf, которое должно вызвать внутреннюю ошибку.Если это не так, вы знаете, что файл .htaccess не читается.Моего нет, и я нашел следующее исправление:

В папке etc/apache2/sites-enabled был файл с именем default-000.Именно в этом файле я изменил AllowOverride All в 2 местах в файле.

0 голосов
/ 26 июня 2011

Я добавил следующее в мой файл .htaccess, и это было решено.Моя проблема была связана с образом Rackspace / CentOS

Опции -MultiViews

0 голосов
/ 29 сентября 2010

Найдите эту строку в файле httpd.conf

#LoadModule rewrite_module modules/mod_rewrite.so

Если прокомментировано Просто раскомментируйте его, перезапустите сервер Apache и попробуйте включить в drupal администрирование раздела Clean URL

.
...