Как создать сайт в php и создать его статическую версию?
Для конкретного проекта, который у меня есть, серверный код не разрешен. Как создать веб-сайт в php (с включенными, условными выражениями и т.д.), А затем преобразовать его в статический html-сайт, который я могу предоставить клиенту?
Обновление: Спасибо всем, кто предложил wget. Это то, что я использовал. Я должен был указать, что я был на ПК, поэтому я схватил версию Windows отсюда: http://gnuwin32.sourceforge.net/packages/wget.htm.
Ответы
Ответ 1
Если у вас есть система Linux, доступная для вас, используйте wget:
wget -k -K -E -r -l 10 -p -N -F -nH http://website.com/
Функции
- -k: конвертировать ссылки в относительные
- -K: сохранить исходные версии файлов без конверсий, сделанных wget
- -E: переименовать html файлы в .html(если у них еще нет расширения htm (l))
- -r: рекурсивный... конечно, мы хотим сделать рекурсивную копию
- -l 10: максимальный уровень рекурсии. если у вас действительно большой веб-сайт, вам может потребоваться поставить большее число, но 10 уровней должны быть достаточными.
- -p: загрузить все необходимые файлы для каждой страницы (css, js, images)
- -N: включить штамп времени.
- -F: Когда ввод считывается из файла, принудительно его обрабатывать как HTML файл.
- -nH: По умолчанию wget помещает файлы в каталог с именем hostname. Это отключит создание этих каталогов имен хостов и поместит все в текущий каталог.
Источник: Жан-Паскаль Худе weblog
Ответ 2
создайте свой сайт, затем используйте инструмент для зеркалирования, например wget или lwp-mirror, чтобы захватить статическую копию
Ответ 3
Я сделал это в прошлом, добавив:
ob_start();
В верхней части страниц, а затем в нижнем колонтитуле:
$page_html = ob_get_contents();
ob_end_clean();
file_put_contents($path_where_to_save_files . $_SERVER['PHP_SELF'], $page_html);
Возможно, вы захотите преобразовать расширения .php в .html, прежде чем выпекать HTML в файлы.
Если вам нужно сгенерировать несколько страниц с помощью переменных, достаточно просто добавить имя файла с md5sum из всех переменных GET, вам просто нужно изменить их в HTML тоже. Таким образом, вы можете конвертировать:
somepage.php?var1=hello&var2=hullo
к
somepage_e7537aacdbba8ad3ff309b3de1da69e1.html
уродливый, но работает.
Иногда вы можете использовать PHP для генерации javascript для эмуляции некоторых функций, но это невозможно автоматизировать очень легко.
Ответ 4
Создайте сайт как обычно, затем используйте программное обеспечение spidering для создания копии HTML.
HTTrack - это программное обеспечение, которое я использовал раньше.
Ответ 5
Один из способов сделать это - создать сайт на PHP как обычно, а script фактически захватить веб-страницы (через HTTP - вы можете использовать wget или написать другой PHP скрипт, который просто использует файл() с URL-адреса) и сохранять их в общедоступных веб-сайтах, когда вы "делаете". Затем вы можете снова запустить script, когда вы решите снова изменить страницы. Этот метод весьма полезен, когда вы медленно изменяете базу данных и много трафика, так как вы можете исключить все SQL-запросы на реальном сайте.
Ответ 6
Если вы используете modx, у него есть встроенная функция для экспорта статических файлов.
Ответ 7
Если у вас есть несколько страниц, со всеми видами переменных запроса и еще чего-то, вероятно, одним из инструментов spidering, о котором говорили другие комментаторы (wget, lwp-mirror и т.д.), было бы самым простым и надежным решением.
Однако, если количество страниц, которые вам нужно получить, невелико или, по крайней мере, управляемо, у вас есть несколько вариантов, которые не требуют каких-либо сторонних инструментов (не то, что вы должны с их скидкой JUSt, потому что они являются третьим партия).
-
Вы можете использовать php в командной строке, чтобы заставить его выводить непосредственно в файл.
php myFile.php > myFile.html
Использование этого метода может стать болезненным (хотя вы можете поместить его в оболочку script), и он не позволяет передавать переменные одинаковым образом (например: php myFile.php?abc=1
не будет работать).
-
Вы можете использовать другой файл PHP в качестве "сборки" script, который содержит список всех URL-адресов, которые вы хотите, а затем захватывает их через file_get_contents()
или file()
и записывает их в локальный файл. Используя этот метод, вы также можете проверить его, изменился ли файл (md5_file()
должен работать для этого), поэтому вы будете знать, что нужно предоставить клиенту, если они хотят только обновления.
-
В дополнение к # 2 перед записью вывода в файл сканируйте его для локальных URL-адресов, а затем добавьте их в список загружаемых файлов. Пока вы там, измените эти URL-адреса, чтобы ссылаться на то, что вы в конечном итоге назовете своим результатом, чтобы у вас была работающая сеть в конце. Обратите внимание на осторожность здесь - если это звучит хорошо, вы, вероятно, можете использовать один из инструментов, которые уже существуют, и делать это за вас.
Ответ 8
В качестве альтернативы wget вы можете использовать (Win | Web) HTTrack (Веб-сайт), чтобы захватить статическую страницу. HTTrack даже исправляет ссылки на файлы и документы в соответствии со статическим выходом.
Ответ 9
Я делаю это на своем собственном веб-сайте для определенных страниц, которые гарантированно не изменятся - я просто запускаю оболочку script, которую можно отварить до (предупреждение: bash псевдокод):
find site_folder -name \*.static.php -print -exec Staticize {} \;
со значением Staticize:
# This replaces .static.php with .html
TARGET_NAME="`dirname "$1"`/"`basename "$1" .static.php`".html
php "$1" > "$TARGET_NAME"
Ответ 10
wget, вероятно, самый полный метод. Если у вас нет доступа к этому, и у вас есть шаблон, основанный на шаблонах, вы можете посмотреть в использовании Savant 3. Я рекомендую Savant 3 высоко по сравнению с другими системами шаблонов, такими как Smarty.
Savant очень легкий и использует PHP в качестве языка шаблонов, а не какой-то собственный подъязык. Команда, которую вы хотите найти, - это fetch(), которая "скомпилирует" ваш шаблон и поместит его в переменную, которую вы можете вывести.
http://www.phpsavant.com/