Автор Тема: Установка Apache mod_rewrite на Nexenta CP 3.0  (Прочитано 4496 раз)

Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 461
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Установка Apache mod_rewrite на Nexenta CP 3.0
« : Август 03, 2011, 02:45:43 am »
В /etc/apache2/apache2.conf добавлены директивы
RewriteEngine on
RewriteRule   ^oldstuff\.html$  newstuff.html

a2enmod rewrite
svcadm restart svc:/network/apache2:default
while [ true ]; do sleep 5;svcs -a|grep apa; done
online*        11:03:07 svc:/network/apache2:default
online*        11:03:07 svc:/network/apache2:default
online         11:04:05 svc:/network/apache2:default

Командой pldd выяснено, что /usr/lib/apache2/modules/mod_rewrite.so подгружен
# cat /var/www/newstuff.php
<?php
print_r(apache_get_modules());
?>
Также отображает успешную загрузку модуля

Однако правила преобразования адресов не срабатывают. Для выяснения причины следует добавить в /etc/apache2/apache2.conf директивы протоколирования:
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 9

Анализом вывод команды
grep oldstuff\.html /var/log/apache2/rewrite.log
Выяснено, что надо скорретировать правило преобразования добавлением слешей:
RewriteRule   ^/oldstuff\.html$  /newstuff.html

Чтобы для применения изменений не требовалась перезагрузка сервера, следует использовать .htaccess
Правила преобразования были перенесены в .htaccess
RewriteEngine On
RewriteBase   /
RewriteRule   ^/oldstuff\.html$  /newstuff.html

Анализом вывод команды
grep oldstuff\.html /var/log/apache2/rewrite.log
92.255.239.250 - - [03/Aug/2011:11:45:14 +0400] [188.128.114.221/sid#81a4ed8][rid#8333af0/initial] (2) init rewrite engine with requested uri /oldstuff.html
92.255.239.250 - - [03/Aug/2011:11:45:14 +0400] [188.128.114.221/sid#81a4ed8][rid#8333af0/initial] (1) pass through /oldstuff.html
Выяснено, что правила не подгружаются

В /etc/apache2/apache2.conf добавлены директивы
AccessFileName .htaccess
AllowOverride all

Перезапускаем apache. смотрим, его состояние
svcs -a|grep apa
maintance         11:54:29 svc:/network/apache2:default

через svcs -xv определяем файл лога и смотрим его:
cat /var/svc/log/network-apache2:default.log

Там написано
AllowOverride not allowed here

Прочитал внимательно описание директивы. Удалил ее из /etc/apache2/apache2.conf и разместил в конфиге сайта

cat /etc/apache2/sites-available/default
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>

Создание .htaccess
host:/var/www$ cat .htaccess
php_flag register_globals On
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^personal_cabinet/(.*)$ personal_cabinet/index.php [NC,L]

Теперь можно убрать директивы прокотолирования из /etc/apache2/apache2.conf