
Я пытаюсь включить mod_rewrite на экземпляре Amazon Linux. Мои директивы Directory выглядят так:
<Directory />
Order deny,allow
Allow from all
Options None
AllowOverride None
</Directory>
<Directory "/var/www/vhosts">
Order allow,deny
Allow from all
Options None
AllowOverride All
</Directory>
А далее в httpd.conf у меня есть LoadModule
директива:
... other modules...
#LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
... other modules...
Я закомментировал все модули Apache, которые не нужны Wordpress.
Тем не менее, когда я запускаю http restart и затем проверяю загруженные модули, /usr/sbin/httpd -l
я получаю только:
[root@foobar]# /usr/sbin/httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
Внутри виртуального хоста, содержащего сайт Wordpress, у меня есть файл, .htaccess
содержащий:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Файл .htaccess принадлежит apache, который является пользователем, под которым работает apache. apachectl -t
Команда возвращаетSyntax OK
Мой /etc/httpd/conf.d/vhosts.conf
выглядит так:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName foobar.net
ServerAlias www.foobar.net
DocumentRoot /var/www/vhosts/foobar/
ErrorLog /var/www/vhosts/foobar/logs/error.log
CustomLog /var/www/vhosts/foobar/logs/access.log combined
</VirtualHost>
Что я делаю не так? Что мне проверить?
решение1
Директива LoadModule динамически загружает модуль.
Попробуйте выполнить команду RewriteEngine on
на виртуальном хосте, а затем apachectl -t
подтвердить, загружен ли модуль на самом деле.
решение2
Я только что запустил новый Amazon Linux и столкнулся с той же проблемой, и она Options FollowSymLink
была там, но следующую строку AllowOverride None
пришлось изменить наAllowOverride All
решение3
Моя конфигурация была правильной, но мне нужно было
Options FollowSymLink
в объявлении DocumentRoot в httpd.conf для работы mod_rewrite.
решение4
Я нашел решение этой проблемы...
Я изменил AllowOverride None
на AllowOverride all
, ниже
Options Indexes FollowSymLinks
в файле конфигурации/etc/httpd/conf/httpd.conf
Спасибо!