Как получить файлы .htaccess, работающие с Apache VirtualHost

Моя проблема в том, что мой файл .htaccess на моем локальном сервере не читается. Обычно настройки в файле VirtualHost всегда имеют приоритет.

Я пробовал следующее:

  • Включено mod_rewrite
  • Изменен AllowOverride на All, но это вызывает HTTP Error 500 Internal server error. Я пробовал его с различными параметрами, но он всегда вызывает ошибку 500.

Я использую файл VirtualHost на Ubuntu, который выглядит следующим образом:

<VirtualHost *:80>
ServerAdmin [email protected]

DocumentRoot /web/website
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /web/website>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
</VirtualHost>

В моем .htaccess файле под /web/website у меня есть следующие правила (которые не читаются):

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA]
ErrorDocument 404 /404
ErrorDocument 401 /401

Одна вещь, которую я пробовал, которая работала, добавляла эти правила непосредственно в файл VirtualHost, но я хотел бы, чтобы мой файл .htaccess работает! Это такой большой вопрос?: (

Изменить: Итак, я посмотрел в своем apache error.log, и он говорит Invalid command 'Action', perhaps misspelled or defined by a module not included in the server configuration со ссылкой на мой файл .htaccess. Кажется, что не существует модуля под названием Action, который я могу включить. Любые идеи?

Изменить 2: Я заметил, что мой файл httpd.conf пуст. Должен ли этот вопрос использовать файлы VirtualHost?

Ответ 1

Посмотрев на мой apache error.log, я понял, что мне просто нужно включить модуль Apache actions:

Действия sudo a2enmod

И не более 500 внутренних ошибок сервера!

Надеюсь, это поможет кому-то по прямой:)

Ответ 2

Вы пропустите директиву RewriteBase /

Добавьте его после директивы RewriteEngine:

RewriteEngine On
RewriteBase /