Подтвердить что ты не робот

Как создать сайт в php и создать его статическую версию?

Для конкретного проекта, который у меня есть, серверный код не разрешен. Как создать веб-сайт в php (с включенными, условными выражениями и т.д.), А затем преобразовать его в статический html-сайт, который я могу предоставить клиенту?

Обновление: Спасибо всем, кто предложил wget. Это то, что я использовал. Я должен был указать, что я был на ПК, поэтому я схватил версию Windows отсюда: http://gnuwin32.sourceforge.net/packages/wget.htm.

4b9b3361

Ответ 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/