Включение mod_rewrite в Amazon Linux

9

Я пытаюсь включить mod_rewrite на экземпляре Amazon Linux. Директивы моего каталога выглядят так:

<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 перезапустить, а затем проверить загруженные модули с /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 foobar@gmail.com
     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>

Что я делаю неправильно? Что я должен проверить?

Lorenzo
источник

Ответы:

5

Директива LoadModule загрузит модуль динамически.

Попробуйте выполнить выдачу RewriteEngine onна виртуальном хосте, а затем apachectl -tподтвердить погоду или нет, модуль действительно загружен.

Джеймс Парк-Ватт
источник
Привет Джеймс, спасибо за ответ. Я добавил больше деталей к вопросу о том, что ты указал. RewriteEngine включен, и apachectl -t возвращает синтаксис OK, но все еще не работает.
Лоренцо
Извините, я удалил свой последний комментарий, это было неправильно. Вы взяли это из файла WordPress .htaccess, не так ли? У вас все AllowOverride включено в вашей конфигурации VHost?
Джеймс Парк-Ватт
Привет Джеймс, да, я взял это из WP. Да, для параметра AllowOverride в подкаталогах моего DocumentRoot установлено значение All
Lorenzo
Пожалуйста, попробуйте это: В конфигурации сервера - не .htaccess добавьте строки RewriteEngine Onи RewriteRule ^.*$ http://www.wordpress.org/ [R]подтвердите, работает ли перезапись вообще. Он должен передавать весь трафик на сайт Wordpress.
Джеймс Парк-Уотт
Я удалил .htaccess из WP и внес изменения, которые вы предложили, но это не работает.
Лоренцо
5

Я только что начал новую Amazon Amazon и имел ту же проблему, и там Options FollowSymLinkбыли, но следующую строку AllowOverride Noneпришлось изменить наAllowOverride All

Адриан
источник
3

Моя конфигурация была правильной, но мне нужно было

Options FollowSymLink

в объявлении моего DocumentRoot в httpd.conf для работы mod_rewrite.

Lorenzo
источник
1

Я получил решение этой проблемы .....

Я изменился AllowOverride Noneна AllowOverride all, ниже Options Indexes FollowSymLinksв файле конфигурации/etc/httpd/conf/httpd.conf

Спасибо!

Ватсал Шах
источник