Назад | Перейти на главную страницу

Еще одна проблема с mod_rewrite

Я пытаюсь запустить mod_rewrite для одного из моих проектов PHP. К сожалению, это не работает, я всегда получаю 404 ошибки. Мои URL-адреса выглядят так:
http://admin.domain.com/index.php?page=#1&action=#2
Я хотел бы переписать это на указанный выше URL:
http://admin.domain.com/#1/#2/

Есть некоторые особые случаи, например, когда нет никаких действий или не указаны дополнительные параметры.

Вот моя конфигурация виртуального хоста (отредактировал):

<VirtualHost *:*>
    ServerName admin.domain.com
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/
    <Directory "/var/www/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory>

    ScriptAlias /awstats/ /usr/lib/cgi-bin/
    Alias /awstats-icon/ /usr/share/awstats/icon/

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    LogLevel warn
    CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Это содержимое .htaccess (в / var / www /):

<IfModule mod_rewrite.c>

    RewriteEngine on
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/(.*)/$ index.php?page=$1&action=$2   [L,QSA]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ index.php?page=$1  [L,QSA]

</IfModule>

А вот вывод журнала ошибок при запросе / home / asdf / или / home /:

[Sat Jun 26 17:46:27 2010] [error] [client ..] File does not exist: /var/www/home
[Sat Jun 26 17:47:09 2010] [error] [client ..] File does not exist: /var/www/home

Я не очень хорошо разбираюсь в regex и mod_rewrite, но похоже, что URL-адрес вообще не переписывается.

Убедитесь, что у вас есть mod_rewrite включен:

Как root:

a2enmod rewrite

Затем перезапустите Apache2 как root:

/etc/init.d/apache2 restart

или

/etc/init.d/httpd restart

В <Directory /var/www/> директива AllowOverride None предотвратить использование файла htaccess. Вы должны изменить его на AllowOverride FileInfo