Я делаю веб-сайт для компании и хотел использовать что-то вроде страниц макета ASP.NET MVC для динамической загрузки контента в макет, но используемый хостинг-провайдер не поддерживает ASP.NET , Я предположил, что они поддерживают Node.js, потому что они сказали, что единственное, что они не поддерживают, это .NET, поэтому я использовал библиотеку шаблонов под названием Embedded JavaScript Templates (http://ejs.co/) с Express.js, но затем выяснил, что Хостинг-провайдер также не поддерживает Node.
Включения на стороне сервера определенно поддерживаются, но мой вопрос заключается в том, могу ли я использовать их, чтобы взять имя файла из URL-адреса, по которому перемещался пользователь, передать его на сторону сервера, включив его в страницу index.html (страницу, которую я пытаюсь использовать) использовать в качестве страницы макета) и веб-сервер должен внедрить содержимое, где находится тег включения? Пока что все примеры, которые я видел для серверной части, показывают имя файла, введенное в виде литерала, например:
<!--#include virtual="physicians.html" -->
В то время как я хочу, чтобы включенный файл определялся тем, что пользователь ввел при переходе на сайт. Если это было http://website.com/physicians.html,, то файл index.html должен быть загружен с «Physicians.html», вставленным туда, где было включение. Примерно так (что явно не работает):
<!--#include virtual="${REQUEST_URI}" -->
Я также попытался добавить следующее в файл .htaccess (обратите внимание, я знаю, что он не включает включения на стороне сервера. Я включил SSI позже, и SSI работал, хотя и не так, как я хотел, как упоминалось раньше):
<ifModule mod_rewrite.c>
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.html
</ifModule>
Это пришло от http://krasimirtsonev.com/blog/article/deep-dive-into-client-side-routing-navigo-pushstate-hash. Я использовал вышеуказанную конфигурацию .htaccess с его клиентской библиотекой Navigo и некоторым AJAX. Вот код JavaScript для загрузки содержимого в файл index.html (в / views хранятся частичные представления):
function loadViewContent(viewPath)
{
$('#main-content').load(viewPath, navSetActive);
}
var root = "http://www.caduceuscorporation.com";
var router = new Navigo(root);
router.on({
'/': loadViewContent.bind(this, "views/home.html"),
'index.html': loadViewContent.bind(this, "views/home.html"),
'/:page': function(params) {
loadViewContent("views/" + params.page + ".html");
}
})
.resolve();
Это прекрасно работает, за исключением того, что если я ввожу недопустимое имя файла, то оно входит в бесконечный цикл загрузки index.html внутри себя. Что делает конфигурация .htaccess, если путь неверен, сервер отправляет обратно содержимое для index.html, следовательно, бесконечный цикл index.html загружает себя в себя.
Есть ли способ использования серверных включений для загрузки контента на основе введенного пользователем URL-адреса, а не предварительно определенного файла? Или мне нужна другая конфигурация .htaccess? Я надеюсь, что дал понять, что я пытаюсь сделать. Если SSI или другая конфигурация .htaccess не работает, я думаю, возможно, мне придется использовать PHP. Я знаю, что хостинг-провайдер это наверняка поддерживает.