.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, где он добавлен).