.ht доступ не работает на сервере Amazon Linux

Я работал над проектом, который использует pushstate для управления навигацией по сайту. В настоящее время проект размещен на учетной записи общего хостинга Godaddy, и я только что установил сервер Amazon EC2 Linux с HTTPD и перенес файлы на новый сервер. Мне пришлось добавить файл.htaccess, чтобы помочь с навигацией pushstate, чтобы он не показывал 404, когда я пытаюсь перейти на http://example.com/page1 например.

Когда я пытаюсь получить доступ к странице типа http://example.com/page1 на сервере Godaddy, он ведет себя как следует - он не пытается получить доступ к фактической странице, а вместо этого использует корневую страницу и добавляет URL-путь / page1 и мой Javascript заботится о визуальном отображении содержимого страницы. Однако на сервере Amazon он выводит меня на страницу 404. Я довольно новичок в.htaccess и push-состоянии, поэтому мне пришлось отключить то, что я мог найти при переполнении стека, чтобы помочь мне заставить это работать (по крайней мере, на сервере Godaddy). Вот файл:

RewriteEngine On
RewriteRule ^([^/d]+)/?$ index.html?id=$1 [QSA]

Не уверен, что я использовал правильный подход и почему один сервер дал бы другой результат другому?

Спасибо

РЕДАКТИРОВАТЬ

Итак, я уже установил allowOveride для всех в моем файле httpd.conf, как показано ниже:

<Directory "/">
    AllowOverride All
</Directory>

Стоит отметить, что здесь я использую HTTPD, а не Apache2 - я не уверен, может ли это изменить ситуацию или нет, но, похоже, это та же процедура. Я также перезапустил сервер, используя sudo service httpd restart но это все тот же результат. Я попробовал вариант vhost, и хотя я не помню точно, что я написал для него, я применил его к */80, так что я уверен, что он был написан правильно.

Есть ли какие-либо другие шаги, которые я могу предпринять, чтобы отладить это дальше и попытаться точно определить, где это происходит?

1 ответ

Пожалуйста, проверьте свою конфигурацию apache2 (/etc/apache2/apache2.conf) для настройки ниже:

<Directory "/">
AllowOverride None
</Directory>

Это не позволит переопределить настройки сервера пользовательскими настройками в файле.htaccess. Так что, если вы обнаружите, что в вашей конфигурации apache2 у вас есть 2 варианта:

1) Заменить его AllowOverride All, сохраните конфигурацию и перезапустите службу apache2 (применяется для всего сервера)

2) Оставь как есть и добавь AllowOverride All строго для конфигурации vhost для вашего сайта (применяется только для vhost, где он добавлен).

Другие вопросы по тегам