html5 pushstate с MAMP

Я работаю над угловым веб-сайтом локально (используя виртуальный хост и псевдоним сервера xip.io) и использую pushstate, чтобы привести в порядок URL-адреса, пронизанные хэшбэнгом. На удаленном сервере я могу использовать.htaccess вместе с базовым href в индексе, чтобы добиться этого, но работая локально, я не смог заставить его работать полностью.

Я могу перемещаться по сайту, и URL меняются соответствующим образом, но если я обновлю страницу, зависимости.js перейдут на 404, и страница будет загружена только наполовину.

Это htaccess, который я пробовал:

# html5 pushstate (history) support: <ifModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !index RewriteRule (.*) /index.html [L] </ifModule>

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

# html5 pushstate (history) support: <ifModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !index RewriteRule (.*) dist/index.html [L] </ifModule>

По-прежнему никакого эффекта.

В googling я обнаружил, что это может быть добавлено через файл vhosts, поэтому я сделал это, добавив эти правила в <Directory> пометить так:

<VirtualHost *:80>
ServerName localmk.ilium1.com
ServerAlias client.*.xip.io
DocumentRoot /Users/mattk/Documents/ilium/web2014/BootstrapRepository/ilium-website-bootstrap/bootstrap/dist
<Directory /Users/mattk/Documents/ilium/web2014/BootstrapRepository/ilium-website-bootstrap/bootstrap/dist>

DirectoryIndex index.html

# html5 pushstate (history) support
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
</IfModule>
</Directory>
</VirtualHost>

Я просто прыгаю в этом материале, и поэтому я довольно невежественен (в случае, если это не показывается здесь). Я могу или не могу задавать правильные вопросы. Любое руководство очень ценится.

РЕДАКТИРОВАТЬ: После перезапуска Apache, страницы, которые я безуспешно пытался обновить ранее, начали делать это. Я был взволнован, ответил на свой вопрос "Перезагрузите сервер" и вернулся к работе счастливым... пока я не обнаружил, что другие представления по-прежнему не обновляются должным образом. Эти шаблоны представления и URL-адреса находятся на один уровень ближе к вершине структуры каталогов, например, представление в /work/ не будет обновляться должным образом / полностью, но вид на /work/somethingelse обновится просто отлично. Консоль говорит мне Resource interpreted as Script but transferred with MIME type text/html для каждого из моих файлов.js (которые в конечном итоге объединяются в один через Grunt), а также Uncaught SyntaxError: Unexpected token < для каждого. Ранее это просто вызывало 404. Не знаю, что происходит.

1 ответ

Ну, это довольно ясно иллюстрирует мою нубишность. Ответ очень прост.

Я забыл перезапустить Apache после редактирования файла vhosts.

Перезапуск сервера работал как шарм. На следующем смущении...

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