httpd.conf и HTML5 pushstate()

Я запускаю сайт с поддержкой AJAX, который обслуживает хэш HTML4 и pushstate() HTML5.

Я только что перешел на экземпляр AWS EC2 (линукс-сервер с apache), и оба сайта работают нормально.

Единственная проблема, с которой я столкнулся, — это когда я обновляю хэш-страницу HTML4, отображается правильная страница.

Однако, когда я обновляю страницу HTML5, например http://www.datingjapan.co/conversations, я получаю следующее сообщение об ошибке:

введите здесь описание изображения

Похоже, что apache пытается войти в папку «разговоры», а не просто вызывать сайт «index.php», который затем использует jquery для загрузки правильной страницы.

Может кто подскажет в чем тут может быть дело. Я предполагаю, что это настройки httpd.conf.

спасибо


person Adam    schedule 25.12.2012    source источник
comment
Я думаю, вы имеете в виду pushstate()popstate – это событие, а не функция . Также «хэш-тег» не подходит в этом контексте — если вы имеете в виду часть URL-адреса после и включая хеш-символ #, это просто хэш, а не хэш-тег.   -  person Paul D. Waite    schedule 26.12.2012
comment
спасибо обновил вопрос..   -  person Adam    schedule 26.12.2012
comment
Всегда пожалуйста. Я обновил свой ответ: Alias это не выход.   -  person Paul D. Waite    schedule 26.12.2012


Ответы (2)


Если вы пытаетесь использовать файл index.php в качестве некоторого типа начальной загрузки, вы можете попробовать это в своем файле .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^(www\.).+$ [NC]
    RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

По сути, это перенаправит все запросы с не-www на www, а затем, если это не файл или каталог, он перенаправит запрос в файл index.php.

person PhearOfRayne    schedule 25.12.2012
comment
Обратите внимание: если вы поместите эти директивы в httpd.conf вместо .htaccess, вы должны поместить их в тег каталога, например. ‹Каталог /var/www/html›‹/Каталог› - person Aaron; 01.09.2016

Я сам не использовал pushState(), но если браузер отправляет запрос /conversations на сайт www.datingjapan.co, то Apache действительно будет искать файл или папку с названием «беседы» в корневом каталоге своего документа, если вы не скажете ему это сделать. что-то другое.

Если вы хотите, чтобы все URL-адреса на сайте www.datingjapan.co обрабатывались одним файлом index.php, вы можете использовать директива AliasMatch в вашем файле настроек Apache:

AliasMatch ^.*$ /index.php

Я думаю, что это приведет к тому, что все URL-адреса будут обрабатываться index.php. (Хотя я не очень разбираюсь в конфигурации Apache, так что могу ошибаться.)

person Paul D. Waite    schedule 25.12.2012