2008-09-15 9 views
16

मेरे पास एक विशेष परियोजना के लिए, कोई सर्वर साइड कोड की अनुमति नहीं है। मैं php में वेब साइट कैसे बना सकता हूं (इसमें शामिल हैं, सशर्त, इत्यादि) और उसके बाद वह एक स्थिर HTML साइट में परिवर्तित हो गया है जिसे मैं क्लाइंट को दे सकता हूं?मैं php में साइट कैसे बना सकता हूं और इसे एक स्थिर संस्करण उत्पन्न कर सकता हूं?

अद्यतन: सभी को धन्यवाद जिन्होंने सुझाव दिया है। मैंने यही किया। मुझे यह निर्दिष्ट करना चाहिए था कि मैं एक पीसी पर था, इसलिए मैंने यहां से विंडोज़ संस्करण को पकड़ लिया: http://gnuwin32.sourceforge.net/packages/wget.htm

उत्तर

38

आप एक Linux सिस्टम आप के लिए उपलब्ध है, तो wget का उपयोग करें:

wget -k -K -E -r -l 10 -p -N -F -nH http://website.com/ 

विकल्प

  • -k: रिश्तेदार
  • कश्मीर के लिंक परिवर्तित: wget
  • -E द्वारा बनाए गए रूपांतरण के बिना फ़ाइलों का एक मूल संस्करण रखें: एचटीएमएल फ़ाइलों का नाम .html के लिए (अगर वे डॉन 'टी पहले से ही एक htm (एल) विस्तार)
  • -r है: पुनरावर्ती ... बेशक हम एक पुनरावर्ती प्रतिलिपि
  • -l 10 बनाना चाहते: प्रत्यावर्तन की अधिकतम स्तर। यदि आपके पास वास्तव में बड़ी वेबसाइट है तो आपको उच्च संख्या डालना पड़ सकता है, लेकिन 10 स्तर पर्याप्त होना चाहिए।
  • -p: प्रत्येक पृष्ठ (सीएसएस, जेएस, छवियों)
  • -N: समय-मुद्रांकन चालू करें।
  • -F: जब फ़ाइल से इनपुट पढ़ा जाता है, तो इसे HTML फ़ाइल के रूप में माना जाने के लिए मजबूर करें।
  • -nH: डिफ़ॉल्ट रूप से, wget साइट के होस्टनाम के नाम पर निर्देशिका में फ़ाइलों को डाल दें। यह उन होस्टनाम निर्देशिकाओं को बनाने में अक्षम कर देगा और सबकुछ वर्तमान निर्देशिका में रखेगा।

स्रोत: Jean-Pascal Houde's weblog

+0

अपाचे और रिवाइटरूल के साथ आप अभी भी पुराने एक्सटेंशन को एचटीएमएल एक्सटेंशन के बिना पा सकते हैं (http://www.example.com/hello जो http://www.example.com/hello.html में परिवर्तित है)। उदाहरण के लिए "RewriteRule^हैलो $ /hello.html [PT]" – Pietro

+0

सभी आने वाले अनुरोधों के लिए .html एक्सटेंशन को जोड़ने के तरीकों के लिए यहां देखें: http://stackoverflow.com/questions/5745490/rewrite-rule-to जोड़ें एचटीएम्एल विस्तार – pfrenssen

1

सामान्य साइट को सामान्य बनाएं, फिर HTML प्रति उत्पन्न करने के लिए स्पाइडरिंग सॉफ़्टवेयर का उपयोग करें।

HTTrack वह सॉफ़्टवेयर है जिसका मैंने पहले उपयोग किया है।

3

अपनी साइट बनाने, तो एक मिरर उपकरण wget या lwp-mirror की तरह एक स्थिर प्रतिलिपि हड़पने के लिए

1

एक तरह से यह करने के लिए है का उपयोग सामान्य रूप में PHP में साइट बनाने के लिए, और एक स्क्रिप्ट है वास्तव में वेब पृष्ठों को हड़पने (HTTP के माध्यम से - आप wget का उपयोग कर सकते हैं या एक और php स्क्रिप्ट लिख सकते हैं जो केवल URL() के साथ फ़ाइल() का उपयोग करता है) और जब आप "पूर्ण" होते हैं तो उन्हें सार्वजनिक वेबसाइट स्थानों पर सहेजें। फिर जब आप पृष्ठों को फिर से बदलने का निर्णय लेते हैं तो आप स्क्रिप्ट को फिर से चला सकते हैं। यह विधि काफी उपयोगी होती है जब आपके पास धीरे-धीरे डेटाबेस और बहुत सारे ट्रैफ़िक होते हैं, क्योंकि आप लाइव साइट पर सभी SQL क्वेरी को समाप्त कर सकते हैं। Staticize साथ

find site_folder -name \*.static.php -print -exec Staticize {} \; 

: (: बैश स्यूडोकोड चेतावनी) मैं बस एक खोल स्क्रिप्ट है कि करने के लिए उबला हुआ जा सकता है चलाने -

0

मुझे कुछ पेज को बदलने के लिए नहीं की गारंटी है के लिए अपने खुद के वेब साइट पर यह करना किया जा रहा है:

# This replaces .static.php with .html 
TARGET_NAME="`dirname "$1"`/"`basename "$1" .static.php`".html 
php "$1" > "$TARGET_NAME" 
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 में कनवर्ट करना चाहते हैं। यदि आपको चर के साथ कई पेज जेनरेट करने की आवश्यकता है, तो सभी जीईटी चर के md5sum के साथ फ़ाइल नाम को जोड़ना एक आसान विकल्प है, आपको बस उन्हें HTML में भी बदलने की आवश्यकता है। तो अगर आप परिवर्तित कर सकते हैं:

somepage.php?var1=hello&var2=hullo 

somepage_e7537aacdbba8ad3ff309b3de1da69e1.html 

बदसूरत लेकिन काम करता है।

कभी-कभी आप कुछ सुविधाओं का अनुकरण करने के लिए जावास्क्रिप्ट उत्पन्न करने के लिए PHP का उपयोग कर सकते हैं, लेकिन इसे आसानी से स्वचालित नहीं किया जा सकता है।

1

यदि आप मोडक्स का उपयोग करते हैं तो यह स्थिर फ़ाइलों को निर्यात करने के लिए फ़ंक्शन में बनाया गया है।

1

यदि आपके पास कई प्रकार के अनुरोध चर और सभी के साथ कई पेज हैं, तो शायद अन्य टिप्पणीकारों ने वर्णित स्पिडरिंग टूल में से एक (wget, lwp-mirror, आदि) सबसे आसान और सबसे मजबूत समाधान होगा।

हालांकि, यदि आपको प्राप्त करने वाले पृष्ठों की संख्या कम है, या कम से कम प्रबंधनीय, आपके पास कुछ विकल्प हैं जिन्हें किसी तीसरे पक्ष के टूल की आवश्यकता नहीं है (ऐसा नहीं कि आपको उन्हें छूट देना चाहिए क्योंकि वे तीसरे पक्ष हैं)।

  1. आप इसे सीधे फ़ाइल में आउटपुट करने के लिए कमांड लाइन पर PHP का उपयोग कर सकते हैं।

    php myFile.php > myFile.html

    इस विधि का उपयोग दर्दनाक हो सकता है (हालांकि आप एक खोल स्क्रिप्ट में यह सब डाल सकता है), और यह आप एक ही तरह से चर पारित करने के लिए अनुमति नहीं है (जैसे: php myFile.php?abc=1 काम नहीं करेगा)।

  2. आप एक "का निर्माण" स्क्रिप्ट जो सभी URLs आप चाहते हैं की एक सूची है के रूप में एक और PHP फ़ाइल इस्तेमाल कर सकते हैं और फिर file_get_contents() या file() के माध्यम से उन्हें पकड़ लेता है और उन्हें एक स्थानीय फ़ाइल के लिए लिखता है। इस विधि का उपयोग करके, आप यह भी जांच सकते हैं कि फ़ाइल बदल गई है या नहीं (md5_file() उस के लिए काम करना चाहिए), ताकि आप जान सकें कि आपके ग्राहक को क्या देना है, क्या उन्हें केवल अपडेट चाहिए।

  3. फ़ाइल को आउटपुट लिखने से पहले, # 2 के आगे, इसे स्थानीय यूआरएल के लिए स्कैन करें और फिर डाउनलोड करने के लिए फ़ाइलों की अपनी सूची में जोड़ें। जब आप वहां हों, तो उन यूआरएल को उस लिंक से जोड़ने के लिए जो आप अंततः अपने आउटपुट को नामित करेंगे ताकि आपके पास अंत में एक कार्यशील वेब हो। यहां सावधानी बरतें - अगर यह अच्छा लग रहा है, तो आप शायद उन उपकरणों में से एक का उपयोग कर सकते हैं जो पहले से मौजूद हैं और यह आपके लिए करते हैं।

0

wget शायद सबसे पूरा तरीका है। यदि आपके पास उस तक पहुंच नहीं है, और आपके पास टेम्पलेट आधारित लेआउट है, तो आप सावंत 3 का उपयोग करना चाहेंगे।मैं Savy की तरह अन्य टेम्पलेट सिस्टम पर Savant 3 अत्यधिक अनुशंसा करता हूं।

सावंत बहुत हल्का वजन है और PHP को टेम्पलेट भाषा के रूप में उपयोग करता है, कुछ मालिकाना उपन्यास नहीं। जिस आदेश को आप देखना चाहते हैं वह fetch() है, जो आपके टेम्पलेट को "संकलित" करेगा और इसे एक वेरिएबल में रखेगा जिसे आप आउटपुट कर सकते हैं। HTTrack (Website) स्थैतिक पृष्ठ हड़पने के लिए |

http://www.phpsavant.com/

1

वैकल्पिक रूप से आप (वेब ​​विन) इस्तेमाल कर सकते हैं wget के लिए। एचटीट्रैक स्थैतिक आउटपुट से मेल खाने के लिए फ़ाइलों और दस्तावेजों के लिंक भी सुधारता है।

संबंधित मुद्दे

 संबंधित मुद्दे